最近寫了一邊文章,得到了很多朋友的,關注,收藏,轉發,真的很開心。
這篇文章,太神奇了,很多Python程式設計師不知道,0.1+0.1+0.1等於幾
有的朋友反饋說,問題到底出在哪裡,怎麼看的還是似懂非懂。下面我就具體詳盡的說一下。
提到Python的進位轉換,相信基礎不錯的朋友肯定能想到幾個內置的函數:
轉換為二進位函數:bin( )轉換為八進位函數:oct( )轉換為十進位函數:int( )轉換為十六進位函數:hex( )我們把0.3轉換成二進位數據吧,我們就用一下內置函數,在Python IDLE中bin(0.3)
>>>bin(0.3)

TypeError: 'float' object cannot be interpreted as an integer
看到這個提示,我們是不是發現我們還是小瞧了這個問題了。這個參數要求必須是整數。我們現在就來看看進位轉化的基本原理:
十進位轉換為二進位: 整數部分:除2取餘,逆序排列 小數部分:乘2取整,順序排列二進位轉換為十進位: 按權相加法,即將二進位每位上的數乘以權,然後相加之和即是十進位數。我們根據這個基本原理,我們利用網上進位轉換工具,十進位數轉化成二進位數(float):


我們通過這個可以看到,我們python的運行情況:
十進位==>二進位:0.3==>0.0100110011001100110011001100110011001100110011001101二進位==> 十進位:0.0100110011001100110011001100110011001100110011001101==>0.30000000000000004
相信朋友們看到這裡已經明白了兩件事:
小數(浮點數)進位是怎麼轉換的為什麼0.1+0.1+0.1!==0.3了再有哪裡不明白,歡迎大家給我留言