python - 两个看似相同的 if 语句之间的区别
问题描述
嗨,我制作了一个脚本来计算直角三角形,作为一种验证方法,我使用了
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
这是怎么回事???
解决方案
推荐阅读
- while-loop - 如何在循环时在 Arduino Mega Board 中自动递增?
- laravel - 如何将 Laravel 5.4 升级到 Laravel 7.12
- html - 如何跨多个 div 跨元素 CSS
- jquery - 在 jQuery 中创建滑动导航栏
- jquery - 用于检查 div 没有类不工作的 JQuery 代码
- python - 什么是阻止同一行和列中的 2 个标签在 tkinter 中相互覆盖的好方法?
- python - 如何反向预测具有指定目标的特征值?
- java - JAVA pdfbox & GROOVY - 打开 PDF 时显示书签,setPageMode 不起作用
- java - System.LoadLibrary 在运行时或由用户控制
- python - 如何优化在 3 个重复维度上使用“itertools.product”的代码?执行超时