+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2020-04(11)

2020-05(28)

2020-06(32)

2020-07(32)

2020-08(51)

python如何判断两个浮点数大约相等?

发布于2021-02-27 12:33     阅读(147)     评论(0)     点赞(13)     收藏(1)


0

1

2

3

4

5

6

7

浮点数相等一直是个老生常谈的话题。今天我们借助python math模块中的isclose函数说明一下这个问题。

isclose(a, b, *, rel_tol=1e-09, abs_tol=0.0)
    Determine whether two floating point numbers are close in value

python官方在文档中给出了如上说明,解释一下参数的含义:
(1)rel_tol :使用科学计数法表示的a, b两数允许的最大差异。例如当rel_tol=1e-02,即表示当a与b两数的差异小于0.1时,即认为是相等的,具体看下面例子。

>>> import math
>>> a = 5.0
>>> b = 4.99

# a - b < 0.1,所以返回true
>>> math.isclose(a, b, rel_tol=1e-2)
True

# |b - a| < 0.1,也是可以的
>>> math.isclose(b, a, rel_tol=1e-2)
True

# |b-a| > 0.01,结果就是false了
>>> math.isclose(b, a, rel_tol=1e-3)
False

(2)abs_tol,该参数表示绝对差,当指定了它之后,还可以实现更为精确的比较。

>>> a=4.953
>>> b=4.951
# 由于a - b >= 0.002,所以结果为false
>>> math.isclose(b, a, abs_tol=0.002)
False

# 由于a - b < 0.003,所以结果为true
>>> math.isclose(b, a, abs_tol=0.003)
True

(3)如果同时指定了上述两个参数,则只要符合一个即可

>>> a=4.953
>>> b=4.951
>>>> math.isclose(b, a,rel_tol=1e-3, abs_tol=0.002)
True

(4)除了浮点数,在整数之间的比较也是非常方便的。

>>> a=1111
>>> b=1120
# 有时在比较比较大的数的时候,
# 个位十位忽略掉都是可以的
>>> math.isclose(b, a,abs_tol=10)
True
>>> math.isclose(b, a,abs_tol=5)
False

哈哈,以上就是python小工具今天的介绍,其实还是实用性很高的一个函数,尤其在大批量数据使用pandas时,优势还是非常明显的。有兴趣的话,可以关注:python小工具。一起学习python和pandas。
在这里插入图片描述

原文链接:https://blog.csdn.net/weixin_45144170/article/details/114091068

0

1

2

3

4



所属网站分类: 技术文章 > 博客

作者:83whjh

链接: https://www.pythonheidong.com/blog/article/859558/8a625d6dc4e54cec3eb3/

来源: python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

13 0
收藏该文
已收藏

评论内容:(最多支持255个字符)