2012-11-11 55 views
0

可能重复:
Division in C++ not working as expected为什么我在这里得到0而不是0.5?

原来我的计划已经返回错误的结果,所以我决定打破代码转换成一小块一小块。事实证明,设置断点后,...

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

...根据C++编译器等于0。我不知道为什么。有人可以向我解释吗?

我使用微软的Visual Studio高级专业版2012

+1

因为int/int = int – chris

+0

dividion期间舍入为int ...只是做double test3 =((2.0 - 1.0))/ 2.0 – relaxxx

回答

5

因为你正在做的整数除法。 1/20,然后将其转换为double,产生0.。如果你想浮点除法,尝试使分工的参数的浮点数之一:

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

因为你在右手侧使用的数字都是整数:(即:表达(2-1)/2计算结果为0(int)1/(int)2计算结果为0,因为整个事情是一个整数

它更改为:

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

中的表达是那么(int)1/(double)2,其将评估为双倍,因此0.5

1

当只有整数参与表达式时,您将只获得整数算术。如果你想有浮点算术,你需要在某个点上包含浮点表达式,例如

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

尝试使您的数字加倍,(2.-1。)/ 2。

相关问题