可能重复:
C++ 中的除法未按预期工作
原来我的程序一直返回错误的结果,所以我决定将代码分成小块。设置断点后,结果...
double test3 = ((2 - 1) / 2);
...根据 C++ 编译器等于 0。我不知道为什么。有人可以向我解释吗?
我正在使用 MS Visual Studio Premium 2012
可能重复:
C++ 中的除法未按预期工作
原来我的程序一直返回错误的结果,所以我决定将代码分成小块。设置断点后,结果...
double test3 = ((2 - 1) / 2);
...根据 C++ 编译器等于 0。我不知道为什么。有人可以向我解释吗?
我正在使用 MS Visual Studio Premium 2012
因为你正在做整数除法。1/2
是0
,然后转换为double
,产生0.
。如果您想要浮点除法,请尝试将除法的参数之一设为浮点数:
double test3 = (2.0-1)/2;
因为您在右侧使用的数字都是整数:(即:表达式的(2-1)/2
计算结果为0
as(int)1/(int)2
计算结果为,0
因为整个事物都是整数。
将其更改为:
double test3 = ((2 - 1) / 2.0);
并且表达式是 then (int)1/(double)2
,它将计算为双精度值,因此0.5
当表达式中只涉及整数时,您只会得到整数算术。如果你想有浮点运算,你需要在某个点涉及一个浮点表达式,例如
double test3 = ((2 - 1) / 2.0);
试着让你的数字翻倍,(2.-1.)/2.;