为什么我在这里得到0而不是0.5?

时间:2012-11-11 15:05:25

标签: c++ math

  

可能重复:
  Division in C++ not working as expected

原来我的程序一直在返回错误的结果,所以我决定将代码分解成小块。设置断点后,结果是......

double test3 = ((2 - 1) / 2);
根据C ++编译器,

...等于0。我不知道为什么。有人可以向我解释一下吗?

我正在使用MS Visual Studio Premium 2012

4 个答案:

答案 0 :(得分:5)

因为你正在进行整数除法。 1/20,然后转换为double,产生0.。如果您想要浮点除法,请尝试将除法的一个参数设为浮点数:

double test3 = (2.0-1)/2;

答案 1 :(得分:1)

因为您在右侧使用的数字都是整数:(即:表达式(2-1)/2评估为0(int)1/(int)2评估为0,因为整个东西是一个整数。

将其更改为:

double test3 = ((2 - 1) / 2.0);

然后表达式是(int)1/(double)2,它将评估为double,因此0.5

答案 2 :(得分:1)

当表达式中只涉及整数时,您将只获得整数运算。如果要进行浮点运算,则需要在某个时刻使用浮点表达式,例如

double test3 = ((2 - 1) / 2.0);

答案 3 :(得分:0)

尝试将你的数字加倍,(2.-1。)/ 2 .;