主要区别在于:
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)