对于一个浮点型变量执行*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 在二进制下无法精确表示,计算时就会产生细小的误差。