Rubyで非常に基本的な10進数計算を行っています(x = 1/b * c)
。Ruby BigDecimal丸め誤差
a = BigDecimal.new("1");
b = BigDecimal.new("0.8903");
c = BigDecimal.new("0.8903");
x = a/b * c;
puts x
出力:0.9999999998379
は、しかし元の式を並べ替える:0.9999999998379
が、私はちょうど1小数(x = 1/b * b)
a = BigDecimal.new("1");
b = BigDecimal.new("0.8903");
x = a/b * b;
puts x
出力にテストケースを単純化してきた問題を除外するためにが正しい答えを返します。
a = BigDecimal.new("1");
b = BigDecimal.new("0.8903");
c = BigDecimal.new("0.8903");
x = c/b;
puts x
出力:1.0
任意のアイデアこれはBigDecimalのバグであるかどうかこれかの原因何?
浮動小数点数の問題を教えてくれてありがとう、BigDecimalにも同じ問題がない限り、私は浮動小数点数を使用していません。
@AndrewLiが –