<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 牛人業(yè)話 > 關(guān)于浮點(diǎn)數(shù)的小數(shù)部分計(jì)算

          關(guān)于浮點(diǎn)數(shù)的小數(shù)部分計(jì)算

          作者: 時(shí)間:2016-08-02 來源:網(wǎng)絡(luò) 收藏

            收到QQ上一個(gè)留言,有位網(wǎng)友詢問我一個(gè)簡(jiǎn)單的問題。問題如下:

          本文引用地址:http://www.ex-cimer.com/article/201608/294898.htm

            1111 011. 1 0001 1110 1011 1000=123.559998,小數(shù)點(diǎn)后是怎么計(jì)算的呢?謝謝您!

            很明顯1111 011. 1 0001 1110 1011 1000是一個(gè)二進(jìn)制數(shù)。整數(shù)部分當(dāng)然好計(jì)算,將每位的權(quán)值加起來即可。這位網(wǎng)友詢問的是小數(shù)部分的計(jì)算方法。其實(shí)也非常簡(jiǎn)單。

            0.10001111010111000=2^(-1)+2^(-5)+2^(-6)+2^(-7)+2^(-8)+2^(-10)+2^(-12)+2^(-13)+2^(-14)=0.559998

            這個(gè)可以通過計(jì)算器來計(jì)算。但是小數(shù)后位數(shù)太多,容易出錯(cuò)。我們可以編寫一段簡(jiǎn)單的代碼來計(jì)算。代碼如下:

            #include

            #include

            char a[]="10001111010111000";

            void main( )

            {

            unsigned char i;

            double sum =0.0;

            printf("sum=");

            for( i =0 ; i< sizeof(a); i++)

            {

            if( a[i] =='1')

            {

            sum = sum + pow(2,-(i+1));

            printf("+2^(%d)",-(i+1));

            }

            }

            printf("n%fn", sum);

            }

            我這樣回答希望他明白!



          關(guān)鍵詞: 浮點(diǎn)數(shù)

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();