乘法除法顺序(?)混乱[重复]。

问题描述 投票:0回答:1

我只是在计算球体的体积,没想到

  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);

又给出了错误的结果。我完全不知道为什么会出现这样的情况... ... 可能是我写错了标题,但我就是不明白这里到底出了什么问题。

c++ c++11 math volume
1个回答
5
投票

4/3 将返回 1 在c++中,因为4和3都是整数,除以两个整数的结果是整数除法。你可以通过执行浮点除法来解决这个问题。4.0/3.0. 这样就会得到预期的输出。

原因是 volume = 4*M_PI/3*pow(radius, 3); 工作,因为整数乘以双数,返回一个双数。由于 M_PI 是一个双倍,你会得到预期的输出。

© www.soinside.com 2019 - 2024. All rights reserved.