Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/159.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C&x2B部门+;没有按预期工作_C++_Division - Fatal编程技术网

C++ C&x2B部门+;没有按预期工作

C++ C&x2B部门+;没有按预期工作,c++,division,C++,Division,我在做其他的事情,但是所有的结果都是零,所以我做了这个简单的例子,结果仍然是零 #include <iostream> int main(int argc, char** argv) { double f=3/5; std::cout << f; return 0; } #包括 int main(int argc,字符**argv) { 双f=3/5; std::cout您缺少3和5是整数的事实,因此您得到的是整数除法。要使编译器执行浮点除法,请将其中一个

我在做其他的事情,但是所有的结果都是零,所以我做了这个简单的例子,结果仍然是零

#include <iostream>

int main(int argc, char** argv)
{
  double f=3/5;
  std::cout << f;
  return 0;
}
#包括
int main(int argc,字符**argv)
{
双f=3/5;

std::cout您缺少3和5是整数的事实,因此您得到的是整数除法。要使编译器执行浮点除法,请将其中一个设为实数:

 double f = 3.0 / 5;
试试这个:

double f = 3.0/5.0;

这应该可以解决您的问题。

尝试在一个除数后面加一个
.0
。这将把它们转换成浮点文字。

它不需要是
.0
,您也可以做
3/5
3e+0/5
3/5e-0
0xCp-2/5
或…只需要这样做o是一个相关的指示符,以便编译器知道它应该作为浮点执行除法

另一种可能性是:
double f=double(3)/5
。这需要更多的输入,但这对您正在做的事情毫无疑问


或者简单地使用
双f=.6
,这也可以做到这一点…

您使用的是整数。您可以使用许多东西使常数像左周围的状态一样双倍,但是这不是很好。很难阅读和混淆。如果您想要3和5,则将它们设置为3.0和5.0。如果强迫它们,每个人都会知道您的意思阅读您的代码。他/她所说的很多内容确实要求您了解C/C++以及浮点是如何存储的,以形成正面或反面。

如果您使用
int
保存通用变量,并希望获得
double
的比率:

using namespace std;
int main()
{
   int x = 7;
   int y = 4;
   double ratio;
   ratio = static_cast<double>(x)/static_cast<double>(y);
   cout << "ratio =\t"<<ratio<< endl;
}
使用名称空间std;
int main()
{
int x=7;
int y=4;
双倍比率;
比率=静态铸件(x)/静态铸件(y);

好吧,我认为很明显,
0xCp-2/5
并不是很严肃!……但对于使用3.0:这是一个品味问题。我个人不喜欢这样写,因为在科学中,小数点后的任何有限数字都暗示着测量值的某种不准确,所以当我看到3.0时,我总是这样认为nk为3±0.05,3.0/5.0对我来说是.6±0.01。这不是双精度!我更喜欢
3/5
。我的帖子的全部目的是让它更容易阅读。3/5看起来不像一个标准的数学等式。你需要了解你的读者:我不认为海报(如果他们对实数和int的不同有问题的话)是为高级科学应用程序编程,所以我认为越简单越好。