我想不通:
gettimeofday(&time,NULL);
float stamp = ( (time.tv_sec*1000000)+(time.tv_usec) );
printf("Time Stamp = %08.3f\n",12345678.123);
printf("Time Stamp = %08.3f\n",stamp);
printf("Time Stamp = %08.3f\n",00000000.000);
输出:
Time Stamp = 12345678.123
Time Stamp = 637973952.000
Time Stamp = 0000.000 //?
最后一个printf怎么不打印小数点前8个0(只打印4个)?
我的目标是打印一个时间戳,小数点左边有 8 位,右边有 3 位。 (始终,如果数字较小,则插入填充的 0)。
最佳答案
小数点左边的“8”不是要打印到小数点左边的位数,而是要打印的总位数,包括小数点本身。如果你想看到小数点左边的 8 位数字和右边的 3 位数字(和小数点),你应该使用
printf("Time Stamp = %012.3f\n", stamp); // 8 to the left + 1 for d.p. + 3 to the right = 12
希望对您有所帮助!
关于c - 为什么 printf() 格式不适用于全 0 的十进制数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24216580/