MiniTest 的 assert_in_delta 和 assert_in_epsilon 方法有什么区别?
What is the difference between MiniTest's assert_in_delta and assert_in_epsilon methods?
这里是documentation for assert_in_delta
:
assert_in_delta(exp, act, delta = 0.001, msg = nil) public
For comparing Floats. Fails unless exp and act are within delta of each other.
assert_in_delta Math::PI, (22.0 / 7.0), 0.01
这是 documentation for assert_in_epsilon
assert_in_epsilon(a, b, epsilon = 0.001, msg = nil) public
For comparing Floats. Fails unless exp and act have a relative error less than epsilon.
这些看起来很相似;到底有什么区别?您什么时候会使用一种方法而不是另一种方法?
主要区别在于:
assert_in_delta
用于 绝对 错误。
assert_in_epsilon
用于 相对 错误。
这是两种不同的 approximation error:
The absolute error is the magnitude of the difference between the exact value and the approximation.
The relative error is the absolute error divided by the magnitude of the exact value.
assert_in_delta
最容易理解,最常用于测试。
在文档的示例中:assert_in_delta Math::PI, (22.0 / 7.0), 0.01
,此断言将 通过 ,因为 22.0/7 - Math::PI == 0.001264...
,小于允许的 delta
0.01
.
(来自 wikipedia)
assert_in_epsilon
通常用于比较大小差异很大的数字的近似值。
例如,在大多数应用中,用 3
的绝对误差逼近数字 1,000
比用 [=] 的绝对误差逼近数字 1,000,000
差得多21=];在第一种情况下,相对误差是 0.003
,而在第二种情况下,它只是 0.000003
.
要在 MiniTest
中编写此示例,假设我们有一个包含两个值的数组,我们要检查的值分别是 "approximately equal to" 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)
这里是documentation for assert_in_delta
:
assert_in_delta(exp, act, delta = 0.001, msg = nil) public
For comparing Floats. Fails unless exp and act are within delta of each other.
assert_in_delta Math::PI, (22.0 / 7.0), 0.01
这是 documentation for assert_in_epsilon
assert_in_epsilon(a, b, epsilon = 0.001, msg = nil) public
For comparing Floats. Fails unless exp and act have a relative error less than epsilon.
这些看起来很相似;到底有什么区别?您什么时候会使用一种方法而不是另一种方法?
主要区别在于:
assert_in_delta
用于 绝对 错误。assert_in_epsilon
用于 相对 错误。
这是两种不同的 approximation error:
The absolute error is the magnitude of the difference between the exact value and the approximation.
The relative error is the absolute error divided by the magnitude of the exact value.
assert_in_delta
最容易理解,最常用于测试。
在文档的示例中:assert_in_delta Math::PI, (22.0 / 7.0), 0.01
,此断言将 通过 ,因为 22.0/7 - Math::PI == 0.001264...
,小于允许的 delta
0.01
.
(来自 wikipedia)
assert_in_epsilon
通常用于比较大小差异很大的数字的近似值。
例如,在大多数应用中,用 3
的绝对误差逼近数字 1,000
比用 [=] 的绝对误差逼近数字 1,000,000
差得多21=];在第一种情况下,相对误差是 0.003
,而在第二种情况下,它只是 0.000003
.
要在 MiniTest
中编写此示例,假设我们有一个包含两个值的数组,我们要检查的值分别是 "approximately equal to" 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)