这是我很困惑的一个奇怪的问题。我最近在Gnu Octave提示中注意到,可以输入负零,如下所示:
octave:2> abomination = -0
它也记得它:
octave:3> abomination
abomination = -0
为了理智,负零等于正零。但我也注意到该标志还有其他作用。像这些:
octave:6> 4 * 0
ans = 0
octave:7> 4 * -0
ans = -0
octave:8> 4 / 0
warning: division by zero
ans = Inf
octave:9> 4 / -0
warning: division by zero
ans = -Inf
可以看到,该标志通过某些操作得以保留。但是我的问题是为什么。这似乎与标准数学完全不同,在标准数学中,零基本上没有符号。有一些吸引人的数学性质吗?在某些数学 Realm 这有关系吗?
仅供引用:以倍频建模的Matlab没有负零。任何使用它们的尝试都将被视为常规零。
编辑:
Matlab确实具有负零,但它们不会显示在默认输出中。
最佳答案
带符号的零是IEEE-754格式的一部分,它们的语义完全由这些格式指定。事实证明,它们非常有用,尤其是在处理复杂的分支切割和复杂平面的转换时(有关更多详细信息,请参阅W. Kahan关于该主题的许多著作,例如经典的《复杂基本功能的分支切割》或《知道什么都没有的迹象”。
简短的版本:负零在数值计算中通常是一件好事,而试图保护用户免受其侵扰的程序通常会对他们造成伤害。 FWIW,MATLAB似乎也使用负零,但是由于它使用主机的printf
例程打印数字,因此它们在Windows上显示与正零相同。
有关MATLAB中有符号零的更多详细信息,请参见MATLAB论坛上的this discussion。
关于math - 为什么Gnu Octave具有负零?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2109755/