a一级爱做片免费观看欧美,久久国产一区二区,日本一二三区免费,久草视频手机在线观看

新聞中心

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

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

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

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

本文引用地址:http://www.j9360.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);

  }

  我這樣回答希望他明白!



關鍵詞: 浮點數

評論


技術專區

關閉