返回顶部
首页 > 资讯 > 后端开发 > Python >在python中如何比较两个float
  • 253
分享到

在python中如何比较两个float

两个pythonfloat 2023-01-31 08:01:03 253人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

前几天跟同事聊起来,在计算机内部float比较是很坑爹的事情。比方说,0.1+0.2得到的结果竟然不是0.3? >>> 0.1+0.2 0.30000000000000004 这篇文章做了详细的解释,简单的来说就是计

前几天跟同事聊起来,在计算机内部float比较是很坑爹的事情。比方说,0.1+0.2得到的结果竟然不是0.3?

>>> 0.1+0.2
0.30000000000000004

这篇文章做了详细的解释,简单的来说就是计算机里面的数字是由二进制保存的,在计算机内部有些数字不能准确的保存,于是就保存一个最靠近的数字。

在十进制中也会存在这样的问题,数字不能准确地表示像1/3这样的数字,所以你必须舍入到0.33之类的东西 - 你不要指望0.33 + 0.33 + 0.33加起来就是1。

因此我们在比较两个float是否相等时,不能仅仅依靠 == 来进行判断,而是当他们两者的差小于一个我们可以容忍的小值时,就可以认为他们就是相等的。

各种语言中都有类似的处理方式,python中是这样处理的?
StackOverFlow有类似的问题: what-is-the-best-way-to-compare-floats-for-almost-equality-in-Python

简单粗暴的判断方法

return abs(f1 - f2) <= allowed_error

python3.5之后,PEP485提案中已给出了解决方案。
使用math.isclose方法,传入需要比较的两个数和可以接受的精度差值即可。

PEP 485: A function for testing approximate equality

PEP 485 adds the math.isclose() and cmath.isclose() functions which tell whether two values are approximately equal or “close” to each other. Whether or not two values are considered close is determined according to given absolute and relative tolerances. Relative tolerance is the maximum allowed difference between isclose arguments, relative to the larger absolute value:

math.isclose 使用方法

>>> import math
>>> a = 5.0
>>> b = 4.99998
>>> math.isclose(a, b, rel_tol=1e-5)
True
>>> math.isclose(a, b, rel_tol=1e-6)
False
It is also possible to compare two values using absolute tolerance,
 which must be a non-negative value:

>>> import math
>>> a = 5.0
>>> b = 4.99998
>>> math.isclose(a, b, abs_tol=0.00003)
True
>>> math.isclose(a, b, abs_tol=0.00001)
False

--结束END--

本文标题: 在python中如何比较两个float

本文链接: https://lsjlt.com/news/193138.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 在python中如何比较两个float
    前几天跟同事聊起来,在计算机内部float比较是很坑爹的事情。比方说,0.1+0.2得到的结果竟然不是0.3 >>> 0.1+0.2 0.30000000000000004 这篇文章做了详细的解释,简单的来说就是计算...
    99+
    2023-01-31
    两个 python float
  • 在Java中如何比较两个对象浅析
    Common Lang 中的 Builder 包内提供了一个 DiffBuilder 类,可以比较两个对象,并返回不同的部分。 首先在要比较对象的类中实现 Diffable...
    99+
    2024-04-02
  • 如何在 Golang 中比较两个函数类型?
    函数类型比较在 go 语言中,函数类型可以根据其参数和返回值类型进行比较。若两个函数类型的签名相同,则它们相等;否则,它们不相等。 Go 中的函数类型比较 在 Go 中,函数类型是一种...
    99+
    2024-04-21
    golang 函数比较
  • 在 PHP 中比较两个数组
    各种操作都是用复杂度不同的数组来完成的,比较操作也不例外。当我们比较两个值时,我们打算了解它们的相似或不同之处。 对于数字(整数和浮点数)、字符和字符串,它可以很简单。但是,对于数组,它可能会变得有...
    99+
    2024-02-27
  • JavaScript中如何比较两个日期
    这篇文章给大家分享的是有关js中如何比较两个日期的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。JavaScript的特点1.JavaScript主要用来向HTML页面添加交互行为。2.JavaScript可以直接...
    99+
    2023-06-14
  • 如何在Linux中比较两个目录的不同
    这篇文章将为大家详细讲解有关如何在Linux中比较两个目录的不同,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。目录结构。[root@node1 ~]# tree ...
    99+
    2023-06-09
  • python如何比较两个列表中相同元素
    要比较两个列表中相同的元素,可以使用集合的交集操作。下面是一个简单的示例代码: list1 = [1, 2, 3, 4, 5] li...
    99+
    2024-04-02
  • php如何比较两个数组
    在php中使用array_intersect()函数对两个数组进行比较,具体方法如下:array_intersect()函数作用:php中array_intersect()函数的作用是用于比较两个数组的元素,并返回其交集。array_int...
    99+
    2024-04-02
  • 在Java中怎么比较两个对象
    这篇文章主要为大家展示了“在Java中怎么比较两个对象”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“在Java中怎么比较两个对象”这篇文章吧。Common Lang 中的 Builder 包内提...
    99+
    2023-06-21
  • Oracle中如何比较两个VARCHAR列的值
    在Oracle中,可以使用比较运算符(如=、<、>、<=、>=、!=)来比较两个VARCHAR列的值。例如,...
    99+
    2024-04-09
    Oracle
  • Python怎么比较两个日期
    今天小编给大家分享一下Python怎么比较两个日期的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。datetime如果需要用P...
    99+
    2023-07-06
  • python比较两个文件的差异
    使用python脚本比较两个文件的差异内容并输出到html文档中,可以通过浏览器打开查看。一、脚本使用对比nginx配置文件的差异 python python_diff_file.py -f1 web26.conf -f2 web103.c...
    99+
    2023-01-31
    差异 两个 文件
  • 我们如何比较两个 MySQL 表中的数据?
    有时我们需要找出两个表中不匹配的数据,尤其是在数据迁移的情况下。可以通过比较表格来完成。考虑下面的示例,其中我们有两个名为“students”和“student1”的表。mysql> Select * from studen...
    99+
    2023-10-22
  • PHP如何比较两个数组求交集
    本篇内容主要讲解“PHP如何比较两个数组求交集”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PHP如何比较两个数组求交集”吧!首先我们要知道PHP提供了多个函数来比较两个数组求交集,本文主要介绍...
    99+
    2023-06-20
  • java如何比较两个字符串相等
    在Java中,可以使用equals()方法来比较两个字符串是否相等。equals()方法是String类的一个方法,用于比较两个字符...
    99+
    2023-08-22
    java
  • python比较两个excel表格的差异
    一个同事有两个excel表格要比较差异, 找了一下有相关软件,如: beyond compare, excel compare但这两个似乎都是直接排序再比较的.然后没办法,就用python折腾了一个脚本. 这个脚本先读入要比较的文件中的表....
    99+
    2023-01-31
    表格 差异 两个
  • 怎么在linux 中比较两个文件夹不同
    怎么在linux 中比较两个文件夹不同?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。比较文件夹diff,可以直接使用diff命令[root@~]# diff -...
    99+
    2023-06-09
  • Python比较两个日期的两种方法详解
    目录datetimestrptime之前我们曾经分享过:Python获取某一日期是“星期几”的6种方法!实际上,在我们使用Python处理日期/时间的时候,经...
    99+
    2024-04-02
  • java如何比较两个对象是否相等
    在Java中,可以使用equals()方法来比较两个对象是否相等。该方法是Object类的一个方法,所有的类都继承自Object类。...
    99+
    2023-10-24
    java
  • Python 比较两个日期的多种方法!
    人生苦短,快学Python!datetime如果需要用Python处理日期和时间,大家肯定会先想到datetime、time、calendar等模块。在这其中,datetime模块主要是用来表示日期时间的,就是我们常说的年月日/时分秒。da...
    99+
    2023-05-14
    Python 命令 日期
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作