在以下声明中(对于合规实现),可以保证哪些声明不可以?


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,或者输入全部为无穷大,并且cab具有相反的符号,则为False。在所有其他情况下为真。 a=b表示它们都不是NaN。
a>b ==> a-b>0是的。 a>b表示两个输入都不是NaN。
a-b>0 ==> a>b是的。 a-b>0表示两个输入都不是NaN。

09-09 22:41
查看更多