原来我的程序一直在返回错误的结果,所以我决定将代码分解成小块。设置断点后,结果是......
double test3 = ((2 - 1) / 2);
根据C ++编译器,...等于0。我不知道为什么。有人可以向我解释一下吗?
我正在使用MS Visual Studio Premium 2012
答案 0 :(得分:5)
因为你正在进行整数除法。 1/2
为0
,然后转换为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 .;