您的位置 首页 IOT

关于浮点数的小数部分核算

收到QQ上一个留言,有位网友询问我一个简单的问题。问题如下:1111 011. 1 0001 1110 1011 1000=123.559998,小数点后是怎么计算的呢?谢谢您!很

  收到QQ上一个留言,有位网友问询我一个简略的问题。问题如下:

  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%f\n", sum);

  }

  我这样答复期望他理解!

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/yingyong/iot/115187.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部