詳細(xì)聊聊為什么Python中0.2+0.1不等于0.3
為什么Python中0.2+0.1不等于0.3
大家請看下面的python程序代碼:
print(0.2+0.1)
猜一猜運(yùn)行結(jié)果是什么,是0.3嗎?
NoNoNo!
來看一看運(yùn)行結(jié)果:
0.30000000000000004
為什么是0.30000000000000004呢?
浮點數(shù)運(yùn)算
這是因為在計算機(jī)中,浮點數(shù)運(yùn)算也是要先轉(zhuǎn)化為二進(jìn)制的
1.浮點數(shù)如何轉(zhuǎn)化為二進(jìn)制:
⑴整數(shù)部分:除以2,取出余數(shù),商繼續(xù)除以2,直到得到0為止,將取出的余數(shù)逆序
⑵小數(shù)部分:乘以2,然后取出整數(shù)部分,將剩下的小數(shù)部分繼續(xù)乘以2,然后再取整數(shù)部分,一直取到小數(shù)部分為零為止。
如果永遠(yuǎn)不為零,則按要求保留足夠位數(shù)的小數(shù),最后一位做0舍1入。將取出的整數(shù)順序排列。
2. 0.2轉(zhuǎn)化為二進(jìn)制:(只看小數(shù)點后)
0.2 × 2 = 0.4 取 0
0.4 × 2 = 0.8 取 0
0.8 × 2 = 1.6 取 1
0.6 × 2 = 1.2 取 1
0.2 × 2 = 0.4 取 0
0.4 × 2 = 0.8 取 0
0.8 × 2 = 1.6 取 1
…
所以0.2轉(zhuǎn)化為浮點數(shù)為0.001100110011…(0011無限循環(huán))0.1轉(zhuǎn)化為二進(jìn)制:
同理0.1轉(zhuǎn)化為浮點數(shù)為0.0001100110011…(0011無限循環(huán))
0.2+0.1
因為在計算機(jī)中,0.2和0.1都不是確定的數(shù),而是近似值,因此它們經(jīng)過浮點數(shù)運(yùn)算(對階、尾數(shù)運(yùn)算、規(guī)格化處理、舍入處理、溢出處理)后得到的值也是近似值,經(jīng)過了計算機(jī)的四舍五入。所以結(jié)果是0.30000000000000004
附:實現(xiàn)0.1+0.2==0.3
在python中有一個模塊decimal可以解決0.1+0.2!=0.3的問題。
decimal模塊提供了一個Decimal數(shù)據(jù)類型用于浮點數(shù)的計算,相比于內(nèi)置的二進(jìn)制浮點數(shù)計算更加精確。
簡單的使用方法:給decimal傳遞Decimal整型或者字符串類型,但不能是浮點數(shù)據(jù)(浮點數(shù)據(jù)本身不準(zhǔn)確)
總結(jié)
到此這篇關(guān)于為什么Python中0.2+0.1不等于0.3的文章就介紹到這了,更多相關(guān)Python 0.2+0.1不等于0.3內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python中文分詞實現(xiàn)方法(安裝pymmseg)
這篇文章主要介紹了Python中文分詞實現(xiàn)方法,通過安裝pymmseg來實現(xiàn)分詞功能,涉及pymmseg的下載、解壓、安裝及使用技巧,需要的朋友可以參考下2016-06-06Python深度學(xué)習(xí)之FastText實現(xiàn)文本分類詳解
FastText是一種典型的深度學(xué)習(xí)詞向量的表示方法,它非常簡單通過Embedding層將單詞映射到稠密空間,然后將句子中所有的單詞在Embedding空間中進(jìn)行平均,進(jìn)而完成分類操作2022-09-09Python中根據(jù)時間自動創(chuàng)建文件夾的代碼實現(xiàn)
這篇文章主要介紹了Python中根據(jù)時間自動創(chuàng)建文件夾的代碼實現(xiàn),這樣的話給工作帶來極大的便利,方便桌面文件按時間存放,具體實例代碼跟隨小編一起看看吧2021-10-10python統(tǒng)計字符串中指定字符出現(xiàn)次數(shù)的方法
這篇文章主要介紹了python統(tǒng)計字符串中指定字符出現(xiàn)次數(shù)的方法,涉及Python中count函數(shù)的使用技巧,非常具有實用價值,需要的朋友可以參考下2015-04-04Python字符串轉(zhuǎn)換成浮點數(shù)函數(shù)分享
本文給大家分享的是一則使用Python實現(xiàn)字符串轉(zhuǎn)換成浮點數(shù)的代碼,主要是使用map和reduce方法來實現(xiàn),有需要的小伙伴可以參考下。2015-07-07