私はちょうど怒鳴る++コードCの数行を持っている:解析ロングとダブル
long re = 103491683;
double temp = (double)re * (double)re;
cout<<"\n"<<"double * double = \t"<<(long)temp;
long temp2 = re * re;
cout<<"\n"<<"long * long = \t\t"<<temp2;
、それは2つの異なる値を返します:私が起こるかを理解することはできません
double * double = 10710528450172488
long * long = 10710528450172489
、私が上でこのバグがありましたjavaと私もCで試した+ +とそれは問題です。助けてください(私の貧しい人の英語のために申し訳ありません)
*解析*はどこですか? – Biffen
http://stackoverflow.com/questions/14265785/why-does-multiplying-two-large-double-numbers-give-a-wrong-result – Mourad
[double型の整数を表す](http://stackoverflow.com/ q/759201/995714)、[精度の損失 - int - > floatまたはdouble](http://stackoverflow.com/q/2781086/995714) –