嗨,我制作了一个脚本来计算直角三角形,并使用了一种验证方法
if a != ((b*b)+(c*c))/a:
print("Incorrect")
但是,对于大于134217729、9007199388958720、9007199388958721的三角形,此方法会产生假负数。当我将方程式更改为
if a**2 != (b**2)+(c**2):
print("Incorrect")
它停止产生假阴性。那么,为什么其中一个工作而另一个不工作的原因是什么呢?我使用以下代码进行测试:
b = 134217729
c = 9007199388958720
a = 9007199388958721
a = ((b*b)+(c*c))/a
print(a)
a = ((b**2)+(c**2))/a
print(a)
n = (b**2)+(c**2)
a = n**(1/2)
print(a)
a = 9007199388958721
if a**2 == (b**2)+(c**2):
print("Correct")
输出为:
9007199388958720.0
9007199388958722.0
9007199388958722.0
Correct
怎么回事?