python - 寻求澄清 math.isclose()
问题描述
我写了一个简单的 Python 代码来理解math.isclose()
。为什么status2
下面的问题 a False
,我在True
这里期待 a 。
根据读数:如果没有发生错误,结果将是:
abs(a-b) <= max(rel_tol * max(abs(a), abs(b)), abs_tol)
所以,我下面关于 status2 的代码应该是这样的(我的想法):
1.00-0.99 <= max (1x10e-2 x 1.00, 0.0)
0.01 <= max (0.01, 0)
<= 0.01 ---->True (but program sesult gives a 'False', why?)`
下面是我的代码
#!/usr/bin/env python3
import math
rel_tole = 1e-02
print ('rel_tole={0}'.format(rel_tole))
a= 1.00
b= 1.01
status= math.isclose(a,b,rel_tol=rel_tole,abs_tol=0.0)
print ('a={0},b={1},rel_tole={2}, status={3}'.format(a,b,rel_tole,status))
a= 1.00
b= 0.99
status= math.isclose(a,b,rel_tol=rel_tole,abs_tol=0.0)
print ('a={0},b={1},rel_tole={2}, status2={3}'.format(a,b,rel_tole,status))
print ('############################################')
rel_tole = 1e-01
print ('rel_tole={0}'.format(rel_tole))
a= 1.00
b= 1.01
status= math.isclose(a,b,rel_tol=rel_tole,abs_tol=0.0)
print ('a={0},b={1},rel_tole={2}, status3={3}'.format(a,b,rel_tole,status))
a= 1.00
b= 0.99
status= math.isclose(a,b,rel_tol=rel_tole,abs_tol=0.0)
print ('a={0},b={1},rel_tole={2}, status4={3}'.format(a,b,rel_tole,status))
结果:
rel_tole=0.01
a=1.0,b=1.01,rel_tole=0.01, status=True
a=1.0,b=0.99,rel_tole=0.01, status2=False
############################################
rel_tole=0.1
a=1.0,b=1.01,rel_tole=0.1, status3=True
a=1.0,b=0.99,rel_tole=0.1, status4=True
谢谢你。
解决方案
推荐阅读
- c# - 正确声明一个数组?
- java - 什么是正确的方法,从不同的方法关闭 FileHandler
- unity3d - 通过实时文本馈送控制游戏对象 || 团结初学者
- compiler-errors - 粗短不能在 raspbian 拉伸上编译
- python - 四舍五入numpy数组的浮点值时出现TypeError
- scikit-learn - 在 Sklearn 的 AffinityPropagation 中打印每个集群的顶级术语
- java - 如何通过 java 使用 AWS lambda 层(层在 Lambda 中是成功的)...错误是 NoClassDefFoundError
- java - 如何配置 SOAP over HTTP 侦听器
- python - 屏蔽数据框在 index.levels 中留下了意外的值
- java - dateParser 返回未加速的结果?