<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          為什么在Python中,0.1 + 0.2 ≠ 0.3

          共 708字,需瀏覽 2分鐘

           ·

          2020-10-12 22:59




          為啥會(huì)有上述圖片的現(xiàn)象呢?其實(shí)是由于float底層存儲(chǔ)原理導(dǎo)致,下面聽(tīng)我娓娓道來(lái)。


          第一步:浮點(diǎn)數(shù)轉(zhuǎn)換為二進(jìn)制表示


          • 整數(shù)部分,直接轉(zhuǎn)換為二進(jìn)制,即:`100111`

          • 小數(shù)部分,讓小數(shù)一直乘2,小于1則用結(jié)果繼續(xù)乘,大于1則結(jié)果減1繼續(xù)乘,等于1則結(jié)束。


          如果小數(shù)位是0.25就會(huì)比較簡(jiǎn)單,例如:
          0.25 * 2 = 0.5 // 小于1,則繼續(xù)乘
          0.5 * 2 = 1 // 等于1,則結(jié)束
          結(jié)束時(shí),將相乘之后等結(jié)果的整數(shù)部分拼接起來(lái),所以 0.25 的二進(jìn)制表示:01


          第二步:科學(xué)計(jì)數(shù)法表示二進(jìn)制小數(shù)


          注意:因?yàn)槭嵌M(jìn)制小數(shù),所以底數(shù)是2。



          第三步:存儲(chǔ)


          • Float32,用32位的二進(jìn)制來(lái)存儲(chǔ)一個(gè)浮點(diǎn)數(shù)。

          • Float64,用64位的二進(jìn)制來(lái)存儲(chǔ)一個(gè)浮點(diǎn)數(shù)。

          接下來(lái),我們以float32為例:



          通過(guò)對(duì)浮點(diǎn)型的存儲(chǔ)原理的學(xué)習(xí),了解到浮點(diǎn)型其實(shí)是一種非精確的表達(dá)小數(shù)的方式,因?yàn)樗膄raction中有位數(shù)限制,超過(guò)就會(huì)忽略。

          float64和float32類似,只是用于表示各部分的位數(shù)不同而已,其中:`sign=1位`、`exponent=11位`、`fraction=52位`,也就意味著可以表示的范圍更大了。


          總結(jié)


          在開發(fā)中想精確的處理小數(shù)時(shí),可以使用decimal。


          作者:武沛齊 ?

          出處:http://www.cnblogs.com/wupeiqi/

          本文版權(quán)歸作者和博客園共有

          -END-


          瀏覽 55
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  青娱乐大香蕉在线视频 | 五月婷久 | 高清国产一卡二卡三卡四卡免费 | 欧美成人精品激情在线观看 | 欧美成人性爱可下载视频 |