登录论坛

查看完整版本 : 为什么Gnu Octave具有负零?


poster
2019-12-10, 20:30
这是我奇怪的一个奇怪的问题。我最近在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 可以看到,该标志通过某些操作得以保留。但是我的问题是为什么。这似乎与标准数学完全不同,在标准数学中,零基本上没有符号。有一些吸引人的数学性质吗?在某些数学领域这很重要吗?

仅供参考:以倍频建模的Matlab没有负零。任何使用它们的尝试都将被视为常规零。

编辑:Matlab确实有负零,但它们不会显示在默认输出中。



回答:

带符号的零是IEEE-754格式的一部分,它们的语义完全由这些格式指定。事实证明,它们非常有用,尤其是在处理复杂的分支切割和复杂平面的转换时(有关更多详细信息,请参阅W. Kahan关于该主题的许多著作,例如经典的《复杂基本功能的分支切割》或《知道什么都没有的迹象”。

简短版:负零在数值计算中通常是一件好事,而试图保护用户免受其侵扰的程序通常会对他们造成伤害。 FWIW,MATLAB似乎也使用负零,但是由于它使用主机的printf例程打印数字,因此它们在Windows上显示与正零相同。

有关MATLAB中有符号零的更多详细信息,请参见MATLAB论坛上的讨论 (http://www.mathworks.com/matlabcentral/newsreader/view_thread/251089) 。



更多&回答... (https://stackoverflow.com/questions/2109755)