私は、次のコードを実行すると、それは問題があります。999999999のフロートが10000000000になるのはなぜですか?
float number = 999999999;
printf("%lf", number);
結果は10000000000
代わりの999999999
です。
なぜそれが999999999
ですか?
私は、次のコードを実行すると、それは問題があります。999999999のフロートが10000000000になるのはなぜですか?
float number = 999999999;
printf("%lf", number);
結果は10000000000
代わりの999999999
です。
なぜそれが999999999
ですか?
Typical float
は、正確に約2 のような1234.0および-0.125のような数字を表すことができます。 999999999
はその1つではありません。 10000000000.0f
が最も近いfloat
です。
近似は、あなたがそれの同等のbignumsライブラリー、および適切な種類が必要になります割り当て
float number = 999999999; // Really assigned 10000000000.0f
あなたの答えをありがとうが、私は "一般的なフロートは約1234.0と-0.125のような約232の異なる数字を正確に表すことができるということについては知らないが、999999999はその1つではない。 – zhaoguangliang
@zhaoguangliang 'float'は通常、4,294,967,296の異なる浮動小数点数よりも4バイトです。それでも、 'float number = endless_different_decimal_values_in_text;'を記述することができます。場合によっては、コードでは40億のうちの1つとして表現できない数字が使用されます。あなたはそれから何が起こるべきだと思いますか? – chux
中に発生しました。 –