【问题标题】:How to let user decide how many decimal places they want printed in their float?如何让用户决定他们想要在浮点数中打印多少个小数位?
【发布时间】:2016-10-31 02:38:54
【问题描述】:
如何让程序允许用户选择他们希望在浮点值中打印多少个小数位?
比如下面的代码
#include <stdio.h>
int main(){
float x;
x = 0.67183377;
printf("%.2f\n", x);
}
会给我们一个0.67 的输出。但是,如果用户想查看完整的数字,或者到小数点后第四位怎么办。他们将如何做到这一点?
【问题讨论】:
-
参见printf(): printf("%.*f\n", n, x); 其中n 是一个包含要打印的小数位数的int。请注意,float 只能保存大约 6-7 个十进制数字;示例中的第 8 和第 9 个将在很大程度上无关紧要。
标签:
c
floating-point
printf
【解决方案1】:
详情请见printf()。使用:
printf("%.*f\n", n, x);
其中n 是一个int,其中包含要打印的小数位数。请注意,float 只能保存大约 6-7 个十进制数字;示例中的第 8 个将在很大程度上无关紧要。
#include <stdio.h>
int main(void)
{
float x = 0.67183377;
for (int n = 0; n < 10; n++)
printf("%.*f\n", n, x);
return(0);
}
示例输出:
1
0.7
0.67
0.672
0.6718
0.67183
0.671834
0.6718338
0.67183375
0.671833754
该值在传递给printf() 之前被转换为double,因为所有可变参数函数都会发生这种情况。当x 更改为double 时,输出为:
1
0.7
0.67
0.672
0.6718
0.67183
0.671834
0.6718338
0.67183377
0.671833770