数据结构与算法分析——c语言描述 习题1.3
这道题把double的整数和小数分别提取出来。
注意double在内存中的储存是接近于输入的数的,加一个0.xx5。
一开始小数部分不会处理,参考了别人的zhengken1991代码
#include <stdio.h>
#define PrintDigit( Ch ) ( putchar( ( Ch ) + '0' ) )
void PrintInt(unsigned int N) /* Print nonnegative N */
{
if (N >= 10)
PrintInt(N / 10);
PrintDigit(N % 10);
}
void PrintOut(double N,int accuracy)
{
if (N < 0){
putchar('-');
N = -N;
}
int n = (int)N;
PrintInt(n);
double decimal = N - n;
if (decimal > 0){
putchar('.');
double add = 0.5;
for (int i = 0; i < accuracy; i++) {
add /= 10;
}
N += add;
for (int i = 0; i < accuracy; i++){
decimal *= 10;
}
PrintInt(decimal);
}
}
int main()
{
PrintOut(1208.123456,3);
putchar('\n');
return 0;
}