重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

分数の足し算をしたいのですが。
1.0/3 = 0.33333333333333 の15桁では、精度が足りません。
精度を1000桁にしたいのですがどうしたらいいのでしょうか?
1.0/3 = 0.3333333333333333.....1000桁。

A 回答 (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)
---
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!