Python中“-0.0”的含义?

计算科学 Python 浮点
2021-11-29 02:11:02

我们在 Python 中发现坐标变换和其他类似计算中偶尔出现的错误,这些错误会产生-0.0. 这在 Python 中有什么用途?到目前为止,它创建了一个零测试错误(即,-0.0不等于0.0;它等于+0.0?)。

简单的测试在提示符下:

>>> -1*0.0
1个回答

浮点数(根据几乎所有编程语言使用的标准1)在尾数、指数和符号位中以一定数量的位存储。因此,浮点数可以在零和负零之间产生差异。在几乎所有应用程序中,这没有什么区别。例如,在 Python 提示符下,您会得到

>>> 0.0
0.0
>>> -1*0.0
-0.0
>>> -1*0.0 == 0.0
True

所以两者比较相等。

为什么数字没有标准化,只有一个零?因为有时你想知道一个数字是否可能已经通过下溢获得。例如:

>>> 1e-300/1e300
0.0
>>> -1e-300/1e300
-0.0

(这是因为指数中只有这么多位,并且可以存储的最小的幅度数约为1e-308,因此上述计算的结果向下舍入为零。)

当然,完全不同的可能性是,您的数字确实与零不同,但非常小,并且无论出于何种原因,您已将系统设置为使小于某个值的所有内容都打印为零。在这些情况下,即使变量ab显示为零(可能带有符号),它们实际上也不为零,因此比较不相等。


1供您参考和进一步研究,标准为IEEE 754