math
模块为什么会返回错误的结果?
第一个测试
A = 12345678917
print 'A =',A
B = sqrt(A**2)
print 'B =',int(B)
结果
A = 12345678917
B = 12345678917
在这里,结果是正确的。
第二个测试
A = 123456758365483459347856
print 'A =',A
B = sqrt(A**2)
print 'B =',int(B)
结果
A = 123456758365483459347856
B = 123456758365483467538432
这里的结果是不正确的。
为什么会这样呢?
int(float(123456758365483459347856)) == 123456758365483459347856 -> False
- MaxNoeFraction
来表示你的数字。请参考我在这里的回答(链接:https://stackoverflow.com/a/77284628/2599133),展示了如何以正确的舍入方式,对任意分数或整数进行任意精度的平方根计算。 - undefined