用C语言程序将一个十进制的浮点数转化为R进制的浮点数

作者&投稿:旁万 (若有异议请与网页底部的电邮联系)
算法:(1)将该数X的整数与小数部分分开为m和n
(2)对m,反复进行:除以R取余数,保存到一个数组a中,除以R取整,作为新的R,直到R为0;
(3)对n,反复进行:将乘以R后的整数部分保存到另一个数组b中,小数部分作为新的n,直到b数组的位数满足精度要求;
(4)输出 :整数部分为将a中的内容从后向前输出,小数部分为将b中的内容从前向后输出

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

:-) 终于解决。我写了个程序,只要结果是正确的就行了。
环境: LINUX
编译: gcc -test.c -lm
结果测试:
Please type in a binary number:
101011.01011110011101
The converted decimal number is:
43.368958

#include
#include

int main(void)
{
char binaryNum[100]; /**
* You can not represent a binary number directly in C.
* so i use a character array to store it. See...Anyway
* we just focus on the result, no matter what method
* is considered. :-)
*/
char *p = binaryNum;
double decimalNum = 0;
int n = 0, dotsNum = 0, i = 0, j = 0;

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

/**
* CHECK IF THE ENTERED BINARY NUMBER IS LEGAL.
* I USED POINTERS. I TREAT THIS DECIMAL AS TWO
* PARTS: INTEGER & DECIMAL.
*/
for ( ; *p != '\0'; p++, n++) {
if (! (*p == '0' || *p == '1' || *p == '.')) {
printf("bad input!
");
return 1;
}
if (*p == '.') {
dotsNum++;
if (dotsNum == 1)
i = n;
else {
printf("bad binary number!
");
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:
");
printf("%f
", decimalNum);

return 0;

C语言里不需要之类的转换,汇编倒是需要写写

用C语言程序将一个十进制的浮点数转化为R进制的浮点数
答:算法:(1)将该数X的整数与小数部分分开为m和n (2)对m,反复进行:除以R取余数,保存到一个数组a中,除以R取整,作为新的R,直到R为0;(3)对n,反复进行:将乘以R后的整数部分保存到另一个数组b中,小数部分作为新的n,直到b数组的位数满足精度要求;(4)输出 :整数部分为将a中的内容...

c语言中如何将10进制的浮点数转化为16进制存放到char型数组中?_百度知 ...
答:本人在串口通信中就用到这个,讲浮点数(不谈进制)转化为字符型(楼主所谓的16进制)放入char字符数组。更精确的说应该是将浮点数,以字节形式放入字节数组(不是char数组哦,因为char是有符号的),用以后续的通信传输(大多数的应用吧)。我用的基本方法是union(联合)代码如下:union UFLOAT { flo...

用c语言编写一个浮点运算程序
答:else D=b;if(D>c)max=D;else max=c;printf("%f",max);return 0;}

c语言中如何将浮点数转换成整数?
答:在C语言中,将一个浮点数变换成整数的示例:main(){ float f=5.75;printf("f=%d,f=%f\n",(int)f,f);} 执行程序,输出结果为f=5,f=5.750000。 f=5即为由浮点数转化出的整数。上述示例中f虽强制转为int型,但只在运算中起作用, 是临时的,而f本身的类型并不改变。因此,(int)f的...

C语言中,单精度浮点数十进制时是22.84,转化为16进制是多少,怎么转化的...
答:还可以先“用2除反向取余数”和“用2乘正向取整数”变成二进制,再从小数点开始左右每4位分开,前后不足4位的用0补齐,然后用对应的16进制符号直接写出来就可以了。22.84化成二进制是10110.11010111000010100011...→1'0110.1101'0111'0000'1010'0011→0001'0110.1101'0111'0000'1010'0011→16....

C语言顺序结构
答:一个十进制的浮点数,例如:abcd.efg (其中a~g为0..9),其值用多项式为:a*10^3 + b*10^2 + c*10^1+d*10^0+e*10^(-1)+f*10^(-1)+g*10^(-3)。而一个二进制的浮点数,我们也将其表示成:abcd.efg (其中a~g为0或1),其值表示为:a*2^3 + b*2^2 + c*2^1+...

在C语言中,如何将一个浮点数变换成整数?
答:需要准备的材料分别有:电脑、C语言编译器。1、首先,打开C语言编译器,新建一个初始.cpp文件,例如:test.cpp。2、在test.cpp文件中,输入C语言代码:double a = 2.71828;printf("%d", int(a));。3、编译器运行test.cpp文件,此时成功将浮点数2.71828转换为了整数2。

有没有用C语言把十进制数转换成浮点数的程序啊?
答:include <stdio.h> main(){ int a=10;float f;f=(float)a;//用强制转换就可以,不过不知你的是什么意思?printf("%f",f);getch();}

在C程序中怎么读取文本中的十进制浮点数
答:1、 启动Visual C++6.0,生成一个单文档的工程,将该工程命名为ReadCoodinate。2、 添加一个“读取文本数据”的菜单项。3、 给视图类添加两个public变量:CArray<CPoint,CPoint> m_PointArray; // 用于记录坐标点数据 int m_PointNum; // 用于记录坐标点个数,在视图类构造函数中初始化为...

c语言“输入一个浮点数,输出它的绝对值,保留两位小数。”求解
答:以下是一个 C 语言程序,用于输入一个浮点数,输出它的绝对值并保留两位小数:```c include <stdio.h> include <math.h> int main() { float num, abs_num;printf("请输入一个浮点数:");scanf("%f", &num);// 计算绝对值 abs_num = fabs(num);// 输出结果并保留两位小数 printf("...