检查Python中的浮点数是否正常

检查Python中的浮点数是否正常,python,floating-point,Python,Floating Point,是否有任何python库函数区分常规浮点数和所有非典型浮点数、NaN、+/-Inf、非规范等 本质上,我是在问这个问题的Python版本:编辑: 正如我所指出的,我之前的回答不太有效,我不确定一个干净的方法来做到这一点。 因此,我猜您必须选择要删除的类型,如下所示: test = [4, 4e99, 0b0101, 3.2, np.nan, 6, np.nan, np.inf] result = [] for value in test: if not np.isnan(value)

是否有任何python库函数区分常规浮点数和所有非典型浮点数、NaN、+/-Inf、非规范等

本质上,我是在问这个问题的Python版本:

编辑: 正如我所指出的,我之前的回答不太有效,我不确定一个干净的方法来做到这一点。 因此,我猜您必须选择要删除的类型,如下所示:

test = [4, 4e99, 0b0101, 3.2, np.nan, 6, np.nan, np.inf]

result = []
for value in test:
    if not np.isnan(value) and np.isfinite(value):
        result.append(value)

print(result)

OUTPUT:
[4, 4e+99, 5, 3.2, 6]

要检查浮点
x
是否有限,只需使用


要检查浮点
x
是否为非正常(低于正常),这里有一个可能的代码段:

import numpy
x = 1.0e-320
fmin_normalized = numpy.finfo(type(x)).tiny
x_is_subnormal =  numpy.isfinite(x) and x!= 0 and abs(x) < fmin_normalized
print(x_is_subnormal)
导入numpy
x=1.0e-320
fmin_normalized=numpy.finfo(类型(x)).tiny
x_是_次常态=numpy.isfinite(x)和x!=0和abs(x)

我让您完成工作(编写适当的lambda并过滤集合)

不会
isinf
isfinite
isnan
math
包就足够了?使用在线Python服务测试这一点,例如,显示“4”和“6”通过,但“3.2”、“5”和“4e99”不通过。您使用了什么版本的Python来获得显示的输出?既然
”,它怎么可能适用于3.2。isnumeric()
为false?与str(-4)等负数相同。isnumeric()。这段代码真的像广告中宣传的那样有效吗?请注意,
math.isfinite(float('nan'))
为false,因此代码可以进一步简化。继续查看如何检测低于正常值。。。