python - 按特定数字进行浮点精度比较

标签 python math rounding

如何测试两个 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 个数字:ab,并且它有一个预设的阈值。如果ab之间的差异小于阈值,则返回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/

相关文章:

python - 为python程序获取500个 undefined index 页

javascript - 使用 jQuery 获取具有类的所有元素的总美元

php - 寻找优秀、可靠玩家的算法

python - 如何计算游戏板上孔的位置?

java - 同一个小数,不同的四舍五入结果?

python - 脚本适用于 Windows,但不适用于 Linux(语法错误)

python - 使用 python 转储和恢复 mongo db

python - 我收到 KeyError : '563690668808208423' when i'm trying to add exp to user

C++ 数学 : Fitting a complicated function is not working

javascript - 小数点后仅四舍五入至 3 位