为什么Gnu Octave有负零?

Big*_*gle 24 math floating-point matlab octave

这是一个奇怪的我很困惑.我最近注意到在Gnu Octave提示符下,可以输入负零,如下所示:

octave:2> abomination = -0
Run Code Online (Sandbox Code Playgroud)

它也记得它:

octave:3> abomination
abomination = -0
Run Code Online (Sandbox Code Playgroud)

为了理智,负零确实等于常规零.但我也注意到这个标志还有一些其他的影响.像这些:

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
Run Code Online (Sandbox Code Playgroud)

可以看出,通过某些操作保留了标志.但我的问题是为什么.这似乎是对标准数学的彻底背离,其中零基本上没有符号.有这个有吸引力的数学属性吗?这在某些数学领域是否重要?

仅供参考:Matlab,以八度为模型,没有负零.任何使用它们的尝试都被视为常规零.

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

Ste*_*non 30

有符号零是IEEE-754格式的一部分,它们的语义完全由这些格式指定.它们变得非常有用,特别是在处理复杂平面切割和复杂平面的转换时(有关更多细节,请参阅W. Kahan关于该主题的许多着作,例如经典的"复杂基本函数的分支切割",或多Ado about Nothing's Sign Bit").

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

有关MATLAB中已签名零的更多详细信息,请参阅MATLAB论坛上的此讨论.


Joe*_*oey 9

IEEE-754浮点数也具有此属性.对于限制和无限可能会派上用场.例如,极限的1/XX →+∞是0,但该功能从轴的正侧接近,与X →-∞函数从负侧接近这样一个可能会给极限-0 , 在这种情况下.


nos*_*nos 7

签署零

有符号零回归从下面接近0的数学分析概念作为单侧限制,其可以表示为x→0-,x→0-或x→↑0.可以非正式地使用符号"-0"来表示已舍入为零的负数.负零的概念在统计力学和其他学科中也有一些理论应用.