在以下声明中(对于合规实现),可以保证哪些声明不可以?
a + b是有限的==> a + b = b + a
a * b是有限的==> a * b = b * a
a是有限的==> a =-(-a)
a是有限的==> a-a = 0
a是有限的==> 0 * a = 0
a-b = 0 ==> a = b
a = b ==> a-b = 0
a = b并且c + a是有限的==> c + a = c + b
a> b ==> a-b> 0
a-b> 0 ==> a> b
(请编辑此问题,使列表涵盖更多内容,并具有自然的外观。)
最佳答案
关于无穷大的算术确实遵循确定的规则,因此我将问题概括为包括无穷大的情况。我假设您使用=
表示IEEE浮点算法中的比较结果,所以NaN=NaN
为false。a+b=b+a
如果输入都是有限数或具有相同符号的无穷大,则为真。如果是NaN或它们是相反符号的无穷大,则为False,因为它们的总和将为NaN。a*b=b*a
除非输入之一是NaN或它们是0和无穷大,否则为True。同样,这些情况使结果为NaN。a=-(-a)
除非a
是NaN,否则为true。a-a=0
除非a
是NaN或无穷大,否则为true。0*a=0
除非a
是NaN或无穷大,否则为true。a-b=0 ==> a=b
是的。 a-b
等于某物会排除输入是NaN或它们是等号的无穷大,在这种情况下,a-b
将是NaN。在这种情况下,=
的解释很重要。如果输入的符号为零,则它们的差也为零,并且在浮点算术规则下比较相等。a=b ==> a-b=0
除非它们是相同的无穷大,否则为true。在这种情况下,它们比较相等,但它们的差是NaN。 a=b
表示两个输入都不是NaN。a=b ==> c+a=c+b
如果c
是NaN,或者输入全部为无穷大,并且c
与a
和b
具有相反的符号,则为False。在所有其他情况下为真。 a=b
表示它们都不是NaN。a>b ==> a-b>0
是的。 a>b
表示两个输入都不是NaN。a-b>0 ==> a>b
是的。 a-b>0
表示两个输入都不是NaN。