主要区别在于:
assert_in_delta
用于绝对误差。
assert_in_epsilon
是相对误差。
这是两种不同类型的近似误差:
绝对误差是精确值与近似值之差的大小。
相对误差是绝对误差除以精确值的大小。
assert_in_delta
最容易理解,并且最常用于测试。
在文档的示例中:assert_in_delta Math::PI, (22.0 / 7.0), 0.01
,此断言将通过,因为22.0/7 - Math::PI == 0.001264...
,它小于允许delta
的0.01
。
(来自维基百科)
assert_in_epsilon
通常用于比较大小差异很大的数字的近似值。
例如,在大多数应用中,用1,000
绝对误差3
逼近这个数字要比1,000,000
用绝对误差逼近这个数字差得多3
;在第一种情况下,相对误差是0.003
,而在第二种情况下,它只是0.000003
。
要在 中编写此示例MiniTest
,假设我们有一个包含两个值的数组,我们要检查它们分别是“大约等于”1,000
和1,000,000
。我们可以这样写:
# Using the default `epsilon` of 0.001
assert_in_epsilon(1_000, actual[0])
assert_in_epsilon(1_000_000, actual[1])
这在功能上等同于编写:
assert_in_delta(1_000, actual[0], 1)
assert_in_delta(1_000_000, actual[1], 1000)