Я бы хотел, чтобы следующий код работал:
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;
}