永发信息网

怎样用C语言把二进制浮点数转换成十进制数?

答案:1  悬赏:10  手机版
解决时间 2021-01-04 06:02
  • 提问者网友:刺鸟
  • 2021-01-03 22:17
比如说一个二进制浮点数101011.01011110011101,怎样用C语言编程把它转换成十进制数?
最佳答案
  • 五星知识达人网友:一叶十三刺
  • 2021-01-03 22:57
:-) 终于解决。我写了个程序,只要结果是正确的就行了。
环境: LINUX
编译: gcc -test.c -lm
结果测试:
Please type in a binary number:
101011.01011110011101
The converted decimal number is:
43.368958

#include <stdio.h>
#include <math.h>

int main(void)
{
char binaryNum[100];
char *p = binaryNum;
double decimalNum = 0;
int n = 0, dotsNum = 0, i = 0, j = 0;

printf("Please type in a binary number:\n");
scanf("%s", &binaryNum);


for ( ; *p != '\0'; p++, n++) {
if (! (*p == '0' || *p == '1' || *p == '.')) {
printf("bad input!\n");
return 1;
}
if (*p == '.') {
dotsNum++;
if (dotsNum == 1)
i = n;
else {
printf("bad binary number!\n");
return 1;
}
}
}

if (dotsNum)
j = n -1 - i;
else
i = n;

p = binaryNum;

for ( ; i > 0; p++, i--)
if (*p == '1')
decimalNum += pow(2, i -1);
for (p++, i = 1; i <= j; p++, i++)
if (*p == '1')
decimalNum += pow(2, -i);

printf("The converted decimal number is:\n");
printf("%f\n", decimalNum);

return 0;
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯