これは、この質問のコメントを参照しています。
Java のこのコードは 12.100000000000001 を生成し、これは 12.1 を正確に表すことができる 64 ビット double を使用しています。– パイロリスティック
これは本当ですか?浮動小数点数は 2 の累乗の和で表されるため、12.1 はいくらビット数を持っていても正確には表せないと感じました。ただし、両方のアルゴリズムを実装し、有効数字の多い (12.1, 3) でそれらを呼び出した結果を出力すると、彼と私のそれぞれについて次のようになります。
12.10000000000000000000000000000000000000000000000000000000000000000000000000 12.10000000000000100000000000000000000000000000000000000000000000000000000000
を使用してこれを印刷しString.format("%76f")
ました。必要以上にゼロであることはわかっていますが、 12.1 に丸めが見られません。