在Ruby (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
我已经简化了测试用例来排除问题,只是一个小数(x = 1/b * b)
a = BigDecimal.new("1");
b = BigDecimal.new("0.8903");
x = a/b * b;
puts x
输出:0.9999999998379
但是重新安排原公式x = c/b
给出了正确的答案。
a = BigDecimal.new("1");
b = BigDecimal.new("0.8903");
c = BigDecimal.new("0.8903");
x = c/b;
puts x
输出:1.0
任何想法是什么导致了这还是这是一个BigDecimal错误?
感谢评论告诉我浮点数学有什么问题,这就是为什么我使用BigDecimal而不是浮点数,除非BigDecimal也有相同的问题?
@AndrewLi这就是为什么我使用的BigDecimal不漂浮 –