为什么我在这里得到 0 而不是 0.5?

Why am I getting 0 instead of 0.5 here?

本文关键字:为什么 在这里      更新时间:2023-10-16

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

事实证明,我的程序返回了错误的结果,所以我决定将代码分解成小块。设置断点后,原来...

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

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

我正在使用 MS Visual Studio Premium 2012

因为你在做整数除法。1/20,然后转换为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.)/阿拉伯数字。;