n进制小数

n进制小数

将任意十进制正小数分别转换成2,3,4,5,6,7,8,9进制正小数,小数点后保留8位,并输出。

例如:若十进制小数为0.795,则输出:  

十进制正小数 0.795000 转换成 2 进制数为: 0.11001011  

十进制正小数 0.795000 转换成 3 进制数为: 0.21011011  

十进制正小数 0.795000 转换成 4 进制数为: 0.30232011  

十进制正小数 0.795000 转换成 5 进制数为: 0.34414141  

十进制正小数 0.795000 转换成 6 进制数为: 0.44341530  

十进制正小数 0.795000 转换成 7 进制数为: 0.53645364  

十进制正小数 0.795000 转换成 8 进制数为: 0.62702436  

十进制正小数 0.795000 转换成 9 进制数为: 0.71348853

以下代码提供了这个功能。其中,dTestNo表示待转的十进制小数。iBase表示进制数

源代码:

 1 #include<stdio.h>
 2 #include <string.h>
 3 
 4 void fun(double dTestNo, int iBase)
 5 {
 6     int iT[8] = {0};
 7     int iNo;
 8 
 9     printf("十进制小数%lf转换为%d进制小数:", dTestNo, iBase);
10 
11     for(iNo = 0; iNo < 8; iNo++)
12     {
13         dTestNo *= iBase;
14         //printf("%.8lf ", dTestNo);
15         iT[iNo] = (int)dTestNo;
16         if(dTestNo - iT[iNo] >= 0)
17             dTestNo -= iT[iNo];
18     }
19 
20     printf("0.");
21     for(iNo = 0; iNo < 8; iNo++)
22         printf("%d", iT[iNo]);
23     printf("\n");
24 }
25 
26 int main()
27 {
28     double dTestNo;
29 
30     scanf("%lf", &dTestNo);
31     if(dTestNo >= 1.0)         //确保输入的是小数
32     {
33         dTestNo -= (int)dTestNo;
34     }
35 
36     for(int iBase = 2; iBase <= 9; iBase++)
37         fun(dTestNo, iBase);
38 
39     return 0;
40 }
原文地址:https://www.cnblogs.com/Dreamcaihao/p/3055235.html