两个看似相同的if语句之间的区别

时间:2019-10-30 17:38:45

标签: python math

嗨,我制作了一个脚本来计算直角三角形,并使用了一种验证方法

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

怎么回事?

0 个答案:

没有答案