我有一个运行大量计算的系统,由于某种原因,每次 0.07 出现时,它都会显示为 0.07000000000000001
我很清楚浮点数是近似值,但是我正在编写这样的代码:
number = '%.2f' % ( num1 - num2 )
number.to_f
尽管如此,0.07000000000000001 仍然出现在我的代码中,并最终导致数组排序失败:
sort! { |a,b| b <=> a } <-- b equals 0.07000000000000001 and a equals 0.08
它会引发一个错误,说它无法比较这两个数字。关于如何解决这个问题的任何想法?
更新
所以看起来好像原始值是 0.07351923338974675,此时我调用 .round(2)。然后我将它暂时存储在 Redis 中,然后将其拉回。当它运行计算时,它最终显示为 0.07000000000000001。听起来整数比较在这里可能是最好的,除非有替代解决方案。