Sim*_*Ask 0 c++ math volume c++11
我只是在计算球体的体积并且出乎意料地
volume = (4/3)*M_PI*pow(radius, 3);
or
volume = 4/3*M_PI*pow(radius, 3);
Run Code Online (Sandbox Code Playgroud)
给出 392.699(应该是 523.6)
但是如果我写
volume = 4*M_PI/3*pow(radius, 3);
Run Code Online (Sandbox Code Playgroud)
或者
M_PI*4/3*pow(radius_, 3);
Run Code Online (Sandbox Code Playgroud)
一切安好。但
M_PI*(4/3)*pow(radius_, 3);
Run Code Online (Sandbox Code Playgroud)
再次给出错误的结果。我完全不知道为什么会这样......可能我写错了标题,但我只是不明白这里出了什么问题......
4/3将1在 c++ 中返回,因为 4 和 3 都是整数,将两个整数相除将导致整数除法。您可以通过执行浮点除法解决这个问题:4.0/3.0。这将给出预期的输出。
之所以volume = 4*M_PI/3*pow(radius, 3);有效,是因为将整数乘以双精度数,返回双精度数。由于M_PI是双精度数,您会得到预期的输出。