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 }