为什么下面的每个计算中的最后一位数字都不同?它们不应该是一样的吗?
<div class="positioning">
//Content
</div>
答案 0 :(得分:3)
浮点数不能精确地表示所有实数,并且浮点运算不能精确地表示真正的算术运算,这会导致许多令人惊讶的情况。
我建议阅读:https://en.wikipedia.org/wiki/Floating_point#Accuracy_problems
您可以使用BigDecimal
代替浮点数
require 'bigdecimal'
BigDecimal.new( '1.0') / 3 #=> 0.333333333333333333
BigDecimal.new( '10.0') / 3 #=> 3.333333333333333333
BigDecimal.new('100.0') / 3 #=> 33.333333333333333333
答案 1 :(得分:1)
1.0/3 * 10 == 10.0/3 # => false
Floats是不准确的,因此,在当前版本的Ruby中,简化了Rational的使用:
1/3r * 10 == 10/3r # => true