用C ++计算球体的体积

时间:2010-05-06 23:55:36

标签: c++

这可能很简单,但是在C ++中计算球体积的正确方法是什么?我的getArea()似乎是正确的,但是当我致电getVolume()时,它输出的数量不正确。在radius = 1范围内,它给出了pi的答案,这是不正确的:

double Sphere::getArea() const
{
    return 4 * Shape::pi * pow(getZ(), 2);
}

double Sphere::getVolume() const
{
    return (4 / 3) * Shape::pi * pow(getZ(), 3);
}

3 个答案:

答案 0 :(得分:22)

您在(4 / 3)中使用整数除法。相反,使用浮点除法:(4.0 / 3.0)

4/3为1,因为整数除法仅产生整数。您可以通过测试代码确认:std::cout << (4/3) << std::endl;

答案 1 :(得分:4)

(4 / 3)中,这些都是整数,所以你得到整数除法。这意味着结果将被截断(1.333 ...变为1)。使其中一个成为双重,以便在分裂期间将另一个提升为双倍,从而产生正确的结果。

我更喜欢使用(4.0 / 3.0)

答案 2 :(得分:3)

(4/3)是一个整数表达式,因此被截断为1.尝试(4.0 / 3.0)