例如,如果我想测试该数字x = 5
,我可以编写一个测试来测试确实,x
等于5
。那么是否有必要添加其他测试,例如x != 4
和x != 6
?或者检查x = 5
是否意味着那些其他测试也是正确的呢?
答案 0 :(得分:0)
如果变量ForEach-Object
完全代表数字,则不需要针对不同的值进行测试。除了显而易见之外,这源于标准数学中假设的等式算子的传递性。
然而,标准二进制编码无法准确表示许多像0.1这样的小数。在这种情况下,您必须接受某个错误,因此不应该对x
进行测试,因为即使两个值在所需的容差范围内相等,它也可以是x == 0.1
。相反,您应该测试false
x <= 0.1 + e AND x >= 0.1 - e
是否为可接受的错误。
顺便说一下,我使用e
而不是==
作为相等运算符,因为在C语言和相关语言中,=
始终为true,无论x = 5
的原始值是什么1}}是:)。
答案 1 :(得分:0)
这完全取决于背景和范例。
例如,在面向对象的编程语言中,您可以为类型/类定义相等性,这有时意味着相等性不再是可传递的。 x == 5
和x == 6
都是正确的。最糟糕的是x == 6
但x
不是6
。