Zoo*_*ook 4 python floating-point precision division
在我的程序中,我使用除法来测试结果是否为整数,我正在测试可分性.但是,我得到了错误的答案.这是一个例子:
print(int(724815896270884803/61))
Run Code Online (Sandbox Code Playgroud)
给出11882227807719424.
print(724815896270884803//61)
Run Code Online (Sandbox Code Playgroud)
给出正确的结果11882227807719423.
为什么浮点结果错误,如何测试大数是否可被61整除?我是否真的需要进行整数除法然后将其相乘并查看它是否相等?
你应该计算模数(%)而不是分割:
print(724815896270884803 % 61)
Run Code Online (Sandbox Code Playgroud)
这类似于进行整数除法并返回余数(回想小学长除法).剩下的0意思是它是可分的.
浮点结果是错误的,因为将两个整数分开/会产生一个浮点数,并且你的除法的确切结果不能完全表示为a float.确切的结果11882227807719423必须四舍五入到最接近的可表示数字:
In [1]: float(11882227807719423)
Out[1]: 1.1882227807719424e+16
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1273 次 |
| 最近记录: |