將任意十進制正小數分別轉換成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表示進制數。
代碼如下:
#include <stdio.h>
void fun(double dTestNo, int iBase)
{
int iT[8]; //轉化後的小數保留8位數
int iNo;
printf("十進制正小數 %f 轉換成 %d 進制數為: ",dTestNo, iBase);
for(iNo=0;iNo<8;iNo++) //分別得出每位數字 小數部分
{
dTestNo *= iBase;
iT[iNo] = (int)dTestNo; //得出整數部分存放起來
if(dTestNo>=1) dTestNo -= iT[iNo]; //減去整數部分
}
printf("0.");
for(iNo=0; iNo<8; iNo++) printf("%d", iT[iNo]);
printf("\n");
}
void main ( )
{
double dTestNo= 0.795;
int iBase;
for(iBase=2;iBase<=9;iBase++)
fun(dTestNo,iBase);
printf("\n");
}