日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

在python中如何比较两个float类型的数据是否相等

發布時間:2025/3/20 python 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在python中如何比较两个float类型的数据是否相等 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

奇怪的現象
前幾天跟同事聊起來,在計算機內部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中是如何解決的?

各種語言中都有類似的處理方式,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 使用方法

''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:857662006 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' >>> 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

總結

以上是生活随笔為你收集整理的在python中如何比较两个float类型的数据是否相等的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。