C++中的分区没有按预期工作

Psi*_*rus 32 c++ division

我正在研究其他的东西,但一切都是零,所以我做了这个简约的例子,输出仍然是0.

#include <iostream>

int main(int argc, char** argv)
{
  double f=3/5;
  std::cout << f;
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

小智 51

你错过了3和5是整数的事实,所以你得到整数除法.要使编译器执行浮点除法,请使其中一个为实数:

 double f = 3.0 / 5;
Run Code Online (Sandbox Code Playgroud)

  • 整数与浮点除法似乎是一种通过的仪式; 我知道这对我来说. (2认同)

lef*_*out 17

它并不需要.0,你还可以做3./53/5.3e+0 / 53 / 5e-00xCp-2 / 5或......有只需要一个指标涉及这样编译器知道它应该执行除法浮点.

另一种可能性:double f=double(3)/5.这更像打字,但毫无疑问你正在做什么.

或者只是使用double f=.6,这也是诀窍......


ser*_*gio 9

试试这个:

double f = 3.0/5.0;
Run Code Online (Sandbox Code Playgroud)

这应该可以解决你的问题


Die*_*lla 5

尝试将.0其中一个除数后.这会将它们转换为浮点文字.