0

可能重复:
C++ 中的除法未按预期工作

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

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

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

我正在使用 MS Visual Studio Premium 2012

4

4 回答 4

5

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

double test3 = (2.0-1)/2;
于 2012-11-11T15:07:03.850 回答
1

因为您在右侧使用的数字都是整数:(即:表达式的(2-1)/2计算结果为0as(int)1/(int)2计算结果为,0因为整个事物都是整数。

将其更改为:

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

并且表达式是 then (int)1/(double)2,它将计算为双精度值,因此0.5

于 2012-11-11T15:07:09.040 回答
1

当表达式中只涉及整数时,您只会得到整数算术。如果你想有浮点运算,你需要在某个点涉及一个浮点表达式,例如

double test3 = ((2 - 1) / 2.0);
于 2012-11-11T15:07:19.350 回答
0

试着让你的数字翻倍,(2.-1.)/2.;

于 2012-11-11T15:09:35.077 回答