带小数的二进制转十进制(C代码)

男娘i 2022-04-04 10:55 330阅读 0赞

思路:处理带小数的二进制转十进制,我们一般可以把它分为两部分,整数部分和小数部分,整数部分二进制转十进制采用逆向累加法,小数二进制转十进制采用正向累加法,然后总体相加即可。

  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<math.h>
  4. void fun2_10(char str[],int j,int len)//带小数的二进制转十进制
  5. {
  6. int k=j+1;//将k指向小数部分第一位
  7. int cetz=0,cetx=-1;
  8. long Sumz=0;
  9. double Sumx=0;
  10. for( ;j>0;j--)//整数部分逆向累加
  11. {
  12. Sumz+=(str[j-1]-'0')*pow(2,cetz);
  13. cetz++;
  14. }
  15. for( ;k<len;k++)//小数部分正向累加
  16. {
  17. Sumx+=(str[k]-'0')*pow(2,cetx);
  18. cetx--;
  19. }
  20. printf("%lf",Sumz+Sumx);//整数部分加小数部分
  21. }
  22. int main()
  23. {
  24. int j,k;
  25. char str[100];
  26. gets(str);
  27. int len=strlen(str);//统计字符串长度
  28. for(j=0;j<len;j++)//统计整数部分长度
  29. {
  30. if(str[j]=='.')
  31. break;
  32. }
  33. fun2_10(str,j,len);
  34. return 0;
  35. }

发表评论

表情:
评论列表 (有 0 条评论,330人围观)

还没有评论,来说两句吧...

相关阅读

    相关 二进制十进制C代码

    思路:处理带小数的二进制转十进制,我们一般可以把它分为两部分,整数部分和小数部分,整数部分二进制转十进制采用逆向累加法,小数二进制转十进制采用正向累加法,然后总体相加即可。