新聞中心

        EEPW首頁 > 嵌入式系統 > 牛人業話 > 關于浮點數的小數部分計算

        關于浮點數的小數部分計算

        作者: 時間:2016-08-02 來源:網絡 收藏

          收到QQ上一個留言,有位網友詢問我一個簡單的問題。問題如下:

        本文引用地址:http://www.104case.com/article/201608/294898.htm

          1111 011. 1 0001 1110 1011 1000=123.559998,小數點后是怎么計算的呢?謝謝您!

          很明顯1111 011. 1 0001 1110 1011 1000是一個二進制數。整數部分當然好計算,將每位的權值加起來即可。這位網友詢問的是小數部分的計算方法。其實也非常簡單。

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

          這個可以通過計算器來計算。但是小數后位數太多,容易出錯。我們可以編寫一段簡單的代碼來計算。代碼如下:

          #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);

          }

          我這樣回答希望他明白!



        關鍵詞: 浮點數

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 墨竹工卡县| 开阳县| 邵阳县| 安塞县| 北辰区| 闻喜县| 香格里拉县| 长垣县| 徐汇区| 崇州市| 微博| 开化县| 广东省| 和硕县| 正定县| 衡水市| 林口县| 进贤县| 鄄城县| 荣成市| 海口市| 泸定县| 蓬溪县| 濉溪县| 洪洞县| 云阳县| 利辛县| 平顺县| 绥江县| 龙南县| 龙里县| 河津市| 丰城市| 乌拉特中旗| 北碚区| 黔东| 青冈县| 灵宝市| 新郑市| 渝北区| 永川市|