[英]Calculating volume for sphere in 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);
}
你在(4 / 3)
4/3)中使用整數除法。 相反,使用浮點除法: (4.0 / 3.0)
。
4/3
是1,因為整數除法只產生整數。 您可以通過測試代碼確認: std::cout << (4/3) << std::endl;
。
在(4 / 3)
,這些都是整數,因此你得到整數除法。 這意味着結果將被截斷(1.333 ...變為1)。 使其中一個成為雙重,以便在分裂期間將另一個提升為雙倍,從而產生正確的結果。
我更喜歡使用(4.0 / 3.0)
。
(4/3)是一個整數表達式,因此被截斷為1.嘗試(4.0 / 3.0)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.