如何在Python中测试负零?

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

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

def test_sign(x):
    return math.copysign(1,x) > 0

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

def test_sign(x):
    math.atan2(x,-1)

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

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

这不再是我目前的计划,但在提出问题时,我试图根据参数是正面还是负面来重载函数.允许用户传递负零将解决对零值输入意味着的歧义.我认为这对其他用例也可能是普遍感兴趣的.

解决方法

您可以使用二进制表示:
import struct
def binary(num):
    return ''.join(bin(ord(c)).replace('0b','').rjust(8,'0') for c in struct.pack('!f',num))

将返回比特流

最高位是符号位(0表示正数,1表示负数)

然而,IEEE-754也声明0.0 == -0.0 == 0.0.因此不能确定例如-1.0 1.0将例如导致正零或负零.

相关文章

我最近重新拾起了计算机视觉,借助Python的opencv还有face_r...
说到Pooling,相信学习过CNN的朋友们都不会感到陌生。Poolin...
记得大一学Python的时候,有一个题目是判断一个数是否是复数...
文章目录 3 直方图Histogramplot1. 基本直方图的绘制 Basic ...
文章目录 5 小提琴图Violinplot1. 基础小提琴图绘制 Basic v...
文章目录 4 核密度图Densityplot1. 基础核密度图绘制 Basic ...