Я пытаюсь рассчитать радиус мяча, который можно сделать, если у меня есть кожа площадью 4195065486 мм2 и толщиной 1 мм, начиная с маленького шарика с радиусом = 1 мм, производитель может обернуть кожу как многослойную вокруг мяча. Я написал этот код, чтобы получить радиус мяча, который можно сделать, и площадь, которая останется от кожи. (при условии, что пи = 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.
M_PI
из<cmath>
. - person Paul R   schedule 30.10.20134 * atan(1)
, еслиM_PI
недоступен.) - person   schedule 30.10.2013floor(radius in mm)
. - person Henrik   schedule 30.10.2013