24

这是我感到困惑的一个奇怪的问题。我最近在 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 确实有负零,但它们不会显示在默认输出中。

4

3 回答 3

31

带符号的零是 IEEE-754 格式的一部分,它们的语义完全由这些格式指定。结果证明它们非常有用,尤其是在处理复杂平面的复杂分支切割和变换时(有关更多详细信息,请参阅 W. Kahan 的许多关于该主题的著作,例如经典的“复杂基本函数的分支切割,或无事生非的标志位”)。

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

有关 MATLAB 中带符号零的更多详细信息,请参阅MATLAB 论坛上的讨论。

于 2010-01-21T14:33:47.943 回答
9

IEEE-754 浮点数也有这个属性。对于极限和无穷大,它可能会派上用场。例如,当x → +∞ 时 1/ x的极限为 0,但函数从轴的正侧逼近,而x → -∞ 函数从负侧逼近,因此可以将极限设为 -0 , 在这种情况下。

于 2010-01-21T14:11:06.087 回答
7

带符号的零

有符号零与数学分析概念相呼应,即从下方接近 0 作为单边极限,可以用 x → 0−、x → 0− 或 x → ↑0 表示。符号“-0”可以非正式地用于表示已四舍五入为零的负数。负零的概念在统计力学和其他学科中也有一些理论应用。

于 2010-01-21T14:14:39.793 回答