我只是在计算球体的体积,没想到
volume = (4/3)*M_PI*pow(radius, 3);
or
volume = 4/3*M_PI*pow(radius, 3);
得到392.699(应该是523.6)。
但如果我写
volume = 4*M_PI/3*pow(radius, 3);
或
M_PI*4/3*pow(radius_, 3);
一切都很好。但是...
M_PI*(4/3)*pow(radius_, 3);
又给出了错误的结果。我完全不知道为什么会出现这样的情况... ... 可能是我写错了标题,但我就是不明白这里到底出了什么问题。
4/3
将返回 1
在c++中,因为4和3都是整数,除以两个整数的结果是整数除法。你可以通过执行浮点除法来解决这个问题。4.0/3.0
. 这样就会得到预期的输出。
原因是 volume = 4*M_PI/3*pow(radius, 3);
工作,因为整数乘以双数,返回一个双数。由于 M_PI
是一个双倍,你会得到预期的输出。