當我執行以下碼,它有一個問題:爲什麼我的999999999浮點數變成10000000000?
float number = 999999999;
printf("%lf", number);
結果是10000000000
代替999999999
。
爲什麼不是999999999
?
當我執行以下碼,它有一個問題:爲什麼我的999999999浮點數變成10000000000?
float number = 999999999;
printf("%lf", number);
結果是10000000000
代替999999999
。
爲什麼不是999999999
?
Typical float
可以精確地表示不同的數字,如1234.0和-0.125。 999999999
不是其中之一。 10000000000.0f
是最接近的float
替代方案。
逼近分配
float number = 999999999; // Really assigned 10000000000.0f
感謝您的回答,但我不知道「典型浮動可以表示大約232個不同的數字,如1234.0和-0.125,999999999不是其中之一」,您能告訴我更多關於它嗎? – zhaoguangliang
@zhaoguangliang'float'通常是4個字節,最多是4,294,967,296個不同的浮點數。然而你可以編碼float number = endless_different_decimal_values_in_text;'。有時代碼會使用一個不能表示的數字作爲那40億的1。那麼你認爲應該發生什麼? – chux
你需要的是一個等效的大數庫,及相應的類型時發生。 –