- ベストアンサー
RUBY の 分数の 精度
分数の足し算をしたいのですが。 1.0/3 = 0.33333333333333 の15桁では、精度が足りません。 精度を1000桁にしたいのですがどうしたらいいのでしょうか? 1.0/3 = 0.3333333333333333.....1000桁。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
例え1000桁にしても、浮動小数点実数型では1.0/3は3分の1にはなりません。計算によっては誤差がどんどん溜まっていきます。 そういう精度が気になる用途なら、Rational を使いましょう。 Rationalは分数型なので、3で割って3倍したら元の数に戻ります。 --- require "rational" def test(value, count) step = value / count sum = value * 0 count.times do sum += step end print step," * ",count," - ",value," = ",(sum - value),"\n" end test(Rational(1), 300) test(1.0, 300) ---