如何比较Floats和delta?

时间:2008-10-27 08:00:23

标签: ruby

在Ruby中是否有一些功能/语法可以将两个浮点数与delta进行比较?类似于来自 test / unit assert_in_delta(expected_float,actual_float,delta),但返回布尔值?

3 个答案:

答案 0 :(得分:18)

(expected_float - actual_float).abs <= delta

答案 1 :(得分:1)

根据您的应用程序以及浮点值实际表示的内容,将它们转换为具有给定精度的Rationals可能是有意义的。然后直接比较将始终正确,因为Rational只是两个整数。

例如,如果您知道自己正在处理美国货币金额,则将其存储为amount.to_r.round(2)可以进行相等的精确比较。

只是一个想法......并非所有非整数值都需要不精确地表示浮点数

答案 2 :(得分:0)

您可能还需要相对容差/增量计算

http://realtimecollisiondetection.net/blog/?p=89