如何在Python中测试负零?

qua*_*gar 5 python ieee-754

我想测试一个数字是正数还是负数,特别是在零的情况下.IEEE-754允许-0.0,并在Python中实现.

我能找到的唯一解决方法是:

def test_sign(x):
    return math.copysign(1, x) > 0
Run Code Online (Sandbox Code Playgroud)

也许(可能需要更长时间才能运行):

def test_sign(x):
    math.atan2(x, -1)
Run Code Online (Sandbox Code Playgroud)

在常规库中的任何地方都找不到专用函数,我忽略了什么吗?

编辑:(为什么这是相关的)

这不是我目前的计划了,但问这个问题时,我试图超载根据参数值是否是正面或负面的功能.允许用户通过负零就解决了歧义什么意思零值输入.我认为这对其他用例也可能是普遍感兴趣的.

Wil*_*sem 2

您可以使用二进制表示:

import struct
def binary(num):
    return ''.join(bin(ord(c)).replace('0b', '').rjust(8, '0') for c in struct.pack('!f', num))
Run Code Online (Sandbox Code Playgroud)

将返回您的比特流

最高位为符号位(0为正,1为负)

然而 IEEE-754 还规定 +0.0 == -0.0 == 0.0。因此不能确定例如-1.0+1.0会导致正零还是负零。