新手问题 Ruby 中 *0.1 和 /10 结果不一样?

thanatos · August 14, 2015 · Last by msg7086 replied at August 14, 2015 · 1626 hits

对于一个浮点型变量执行*0.1 和/10 为啥结果不同? 比如 133.3 * 0.1 = 13.33000000000002 而 133.3/10= 13.33

谢谢!

[68] pry(main)> 133.3/10.0
=> 13.330000000000002

#1 楼 @42thcoder why 啊?那个 2 是啥意思啊?

你如果追求精确的小数计算 应该用 BigDecimal

(BigDecimal.new("133.3")/BigDecimal.new("10.0")).to_f #=> 13.33

# BigDecimal provides similar support for very large or very accurate floating point numbers.

浮点数计算不精确这不是常识么

#4 楼 @ywjno 好吧,学到一个常识

因为 133.3 和 0.1 在二进制下无法精确表示,计算时就会产生细小的误差。

You need to Sign in before reply, if you don't have an account, please Sign up first.