【发布时间】:2016-08-02 12:23:14
【问题描述】:
我想避免我的代码将近似整数误认为整数。例如,58106601358565889 的平方根为 241,053,109.00000001659385359763188,但是当我使用以下布尔测试时,58106601358565889 欺骗了我,让我认为它是一个完美的平方:
a = 58106601358565889
b = math.sqrt(a)
print(b == int(b))
精度不一定是问题,因为如果我重新检查,我会得到正确的(错误)结论:
print(a == b**2)
测试真整数与近似整数的更好方法是什么? math.sqrt 隐藏在我的代码中的另一个定义中,如果可能的话,我想避免插入平方根的检查。如果这不是一个好问题,我深表歉意;我是 python 新手。
【问题讨论】:
-
应该返回
true是你想要的吗? -
如果我的理解是正确的,它应该返回 False
-
第一个 print(b == int(b)) 我要假。
-
Jeptha,用十进制检查我的答案
标签: python-3.x integer long-integer floating-accuracy math.sqrt