可能重复:
Division in C++ not working as expected为什么我在这里得到0而不是0.5?
原来我的计划已经返回错误的结果,所以我决定打破代码转换成一小块一小块。事实证明,设置断点后,...
double test3 = ((2 - 1)/2);
...根据C++编译器等于0。我不知道为什么。有人可以向我解释吗?
我使用微软的Visual Studio高级专业版2012
可能重复:
Division in C++ not working as expected为什么我在这里得到0而不是0.5?
原来我的计划已经返回错误的结果,所以我决定打破代码转换成一小块一小块。事实证明,设置断点后,...
double test3 = ((2 - 1)/2);
...根据C++编译器等于0。我不知道为什么。有人可以向我解释吗?
我使用微软的Visual Studio高级专业版2012
因为你正在做的整数除法。 1/2
是0
,然后将其转换为double
,产生0.
。如果你想浮点除法,尝试使分工的参数的浮点数之一:
double test3 = (2.0-1)/2;
因为你在右手侧使用的数字都是整数:(即:表达(2-1)/2
计算结果为0
为(int)1/(int)2
计算结果为0
,因为整个事情是一个整数
它更改为:
double test3 = ((2 - 1)/2.0);
中的表达是那么(int)1/(double)2
,其将评估为双倍,因此0.5
当只有整数参与表达式时,您将只获得整数算术。如果你想有浮点算术,你需要在某个点上包含浮点表达式,例如
double test3 = ((2 - 1)/2.0);
尝试使您的数字加倍,(2.-1。)/ 2。
因为int/int = int – chris
dividion期间舍入为int ...只是做double test3 =((2.0 - 1.0))/ 2.0 – relaxxx