它打印0j
以表明它仍然是一个complex
值。您也可以通过这种方式重新输入:
>>> 0j
0j
其余的可能是IEEE754浮点表示法的神奇结果,它可以区分0和-0,即所谓的有符号零。基本上,只有一点表明数字是正数还是负数,而与数字是否为零无关。这解释了为什么1j * -1
给出的东西的实部为负零:正零乘以-1。
标准要求-0等于+0,这说明了为什么(1j * -1).real == 0.0
仍然成立。
了Python仍然决定打印-0究其原因,是在复杂的世界,这些使分支裁减差异,例如在的phase
功能:
>>> phase(complex(-1.0, 0.0))
3.141592653589793
>>> phase(complex(-1.0, -0.0))
-3.141592653589793
这是关于虚构部分而不是实部的,但是很容易想象实部的符号会产生相似影响的情况。