n進制小數,double到int的強制轉換

N進制小數

將任意十進制正小數分別轉換成2,3,4,5,6,7,8,9進制正小數,小數點後保留8,並輸出。例如:若十進制小數爲0.795,則輸出:web

十進制正小數 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表示進制數。請填寫缺失的部分。svg

把填空的答案(僅填空處的答案,不包括題面)存入考生文件夾下對應題號的「解答.txt」中便可。code

#include<stdio.h>
void fun(double dTestNo, int iBase)
{
	int iT[8];
	int iNo;

	printf("十進制正小數 %f 轉換成 %d 進制數爲: ",dTestNo, iBase);

	for(iNo=0;iNo<8;iNo++)
	{
		dTestNo *= iBase;
		iT[iNo] =(int)dTestNo;
		if(dTestNo>=1.0) dTestNo -= iT[iNo];
	}
	
	printf("0.");
	for(iNo=0; iNo<8; iNo++) printf("%d", iT[iNo]);
	printf("\n");
}
int main ()
{	
	double dTestNo= 0.795;
	int iBase;

	for(iBase=2;iBase<=9;iBase++)
		fun(dTestNo,iBase);
	printf("\n");
}

小數進制的轉換思路:把小數乘以進制數取整,循環此過程直到小數部分爲零,小數點後保留幾位就循環幾回。xml

強制轉換

//把小數強制轉換成整數,須要考慮double的範圍!
double a;
int b;
b=(int)a;