我想計算一個球的半徑,如果我有4195065486 mm2面積和1 mm厚度的皮革,從半徑爲1 mm的小球開始,製造商可以將皮革包裹在球。我編寫了這個代碼來獲得可以製作的球的半徑以及皮革的剩餘區域。 (假設pi = 3.14159)。是否有任何截斷?
double A, r;
const double pi=3.14159;
double AreaCalc(double r);
int main(){
A=4195065486.0;
r=1.0;
double final_r = AreaCalc(r);
cout<<final_r<<" "<<A<<" "<<endl;
return 0;
}
double AreaCalc(double r){
double ca;
ca=4*pi*r*r;
if (A-ca>=0.0){
A=A-ca;
AreaCalc(r+1);
}
else return r;
}
是否有可能導致A
不準確結果的截斷或影響? 通過調試我可以得到A = 12559904.940002432。
什麼是你的輸出和你有什麼期望? – Sambuca
如果你打算使用雙精度,那麼你應該至少使用π的適當精確值 - 最好使用''中的'M_PI'。 –
@PaulR:這個問題假設pi = 3.14159不少於或者更多。 – Aan