乘法结果为负零

3 投票
2 回答
969 浏览
提问于 2025-04-16 12:36

有人能告诉我为什么下面这段代码的输出是负零吗?

a * b = -0

这里的'a'是长整型(long),而'b'是一个十进制(decimal)类的对象……如果a=-28,b=0,那么输出就是-0。

2 个回答

0

这段话解释得很清楚:

http://effbot.org/pyfaq/why-are-floating-point-calculations-so-inaccurate.htm

它是一个非常接近零的数,但在负数那一边,这就是为什么会出现这种情况。

7

来自Python的decimal文档:

带符号的零可能是因为计算时出现了下溢(也就是结果太小了,无法表示)。它们保留了如果计算精度更高时会得到的符号。因为它们的大小都是零,所以正零和负零被视为相等,它们的符号只是用来提供信息。

撰写回答