乘法结果为负零
有人能告诉我为什么下面这段代码的输出是负零吗?
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
文档:
带符号的零可能是因为计算时出现了下溢(也就是结果太小了,无法表示)。它们保留了如果计算精度更高时会得到的符号。因为它们的大小都是零,所以正零和负零被视为相等,它们的符号只是用来提供信息。