Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
次のコードをテストしようとしましたが、n で 434 が返されました。予期していなかった結果です。この精度の損失の理由は何ですか?
double f = 4.35; int n = (int) (100 * f); // n will be 434 - why? n = (int) Math.round(100*f); // n will be 435
浮動小数点は、浮動小数点数を正確に表すことはできません。
印刷してみてください100 * f = 434.9999999。intその double の値は434、小数部分を切り捨てたものになります。
100 * f = 434.9999999
int
434
このroundメソッドは、最も近いint数値に丸め435ます。
round
435