我想下面的代碼工作:拆分雙進陣列在C
double num = 31415; /* num will never have a decimal part */
/* ... code here so that we can now say*/
printf("%d", num_array[0] == 3 && num_array[1] == 1 && num_array[4] == 5); //1
我意識到這是瑣碎整型(這樣做只是int i=0; while(num>0) numarr[size-++i]=num%10, num/=10;
,其中規模預定爲在數字位數數量),但這顯然不適用於浮動/雙打,因爲你不能修改一個浮動。
是的,我需要使用浮動/雙打,儘管不使用浮點部分(這是一個練習)。
而且我已經想出瞭如何使用floor()函數確定雙精度數字的位數。
/* n > 0, n=floor(n) */
int numdigits(double n){
int i = 0;
while(n >0) n=floor(n/10), i++;
return i;
}
fmod()做到了。謝謝! – 2010-06-22 20:41:17
對於log10()建議+1。 'int digits =(int)log10(n)+ 1;' – Clifford 2010-06-22 22:29:54