Java の Float および Double での浮動小数点精度エラーの回避
Java では、浮動小数点数 (float および double) を含む演算精度誤差が生じる可能性があります。これらのエラーは、float と double がバイナリ形式で数値を表し、すべての 10 進数値を正確に表現できないために発生します。
次のコードを検討してください。
for (float value = 0.0f; value < 1.0f; value += 0.1f) System.out.println(value);
期待される値の代わりに、出力には、エラーがわずかに蓄積されて 0.1 ずつ増分が表示されます。
0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.70000005 0.8000001 0.9000001
精度エラーへの対処
この問題を回避するには、次のアプローチを検討してください。
BigDecimal step = new BigDecimal("0.1"); for (BigDecimal value = BigDecimal.ZERO; value.compareTo(BigDecimal.ONE) < 0; value = value.add(step)) { System.out.println(value); }
このコードは、値を正確に表し、0.1 ずつ増分し、精度誤差の蓄積を回避します。
以上がJava での浮動小数点精度エラーを回避するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。