无法了解减法结果

卡里(Shrikant)

我在Ruby(Aptana IDE)中执行了以下代码行

puts 3.3 - 2.7 == 0.6    #which should be true

我得到的结果是

false

然后我执行了

puts 3.3 - 2.7

并得到结果为

0.5999999999999996

有人可以解释发生了什么吗?为什么我得到0.5999999999999996而不是0.6?

斯派克曼

浮点数不能精确地表示所有实数,并且浮点运算不能精确地表示真实算术运算,这导致了许多令人惊讶的情况。

我建议阅读:https : //en.wikipedia.org/wiki/Floating_point#Accuracy_problems

在Ruby中处理此问题的正确方法是使用BigDecimal

> require 'bigdecimal'
true

> a = BigDecimal.new('3.3')
3.3

> b = BigDecimal.new('2.7')
2.7

> c = BigDecimal.new('0.6')
0.6

> a - b == c
true

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章