假设x
是浮点数,我想知道- ( - x)
一般是否等于x
?
让我们忽略角落情况,例如x = max_floating_point_number / min_floating_number。
答案 0 :(得分:9)
总的来说,是的;否定浮点值不会导致错误或精度损失。 (它只涉及翻转。)
一个例外是NaN。 - ( - (NaN))是NaN,但NaN不等于任何值,甚至是另一个NaN。尽管如此,它仍然坚定地处于角落的情况下。
答案 1 :(得分:4)
您没有使用任何编程语言标记您的问题,因此根据IEEE 754标准,答案是肯定的,对于任何非NaN浮点值x,x = - ( - x)。
在一些执行不佳或指定不当的语言中,x
可以计算为非NaN值,并使- (- x) == x
计算为false。当允许编译器以额外的精度计算某些表达式时,会发生这种情况,并且从类型指示的精度减少到指定的精度(C#)或实现不当(如某些C编译器所发生的那样)。在这种情况下,右侧的x
可能保持其精确值,而- (- x)
则以类型的精度计算,最终结果是它们不同。