我想计算一个球的半径,如果我有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