如何测试两个 float 在特定数字之前是否相同?
我试过了,
aa1 = 0.043403
aa2 = 0.043392
print(int(aa1*1000) == int(aa2*1000))
>> True
我想遵循这种方式,但我的数据包括 NAN 值,无论如何它都无法将其转换为介绍。 我也尝试过 math.isclose 但它很棘手。
例如,我想保留 3 位数字并应用 math.isclose
aa3 = 0.013041
aa4 = 0.012545
aa6 = 0.012945
print(math.isclose(aa3, aa4, abs_tol = 0.0001))
>>Flase
print(math.isclose(aa3, aa5, abs_tol = 0.0001))
>>True
但是我想在这两种情况下都得到 False。
有什么简单的想法吗?
最佳答案
创建一个函数,它接受 2 个数字:a
和 b
,并且它有一个预设的阈值。如果a
和b
之间的差异小于阈值,则返回True。
def isSame(a, b):
return abs(a - b) < treshold
其中treshold
可以是 float 。 0.0001 将忽略第三位数字之后的值。或者将数字截取 3 位数字后的字符串,然后将其转换回浮点型。
编辑、截断方法:
def isSame(a, b, digit):
return float(str(a)[0:digit+2]) == float(str(b)[0:digit+2])
如果您的数字 = 3
,我们会忽略第三位数字之后的所有数字。
关于python - 按特定数字进行浮点精度比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62656909/