【问题标题】:How to control the number of digits to appear after the decimal-point character for a double variable?如何控制双变量小数点字符后出现的位数?
【发布时间】:2016-10-09 19:02:39
【问题描述】:
我想打印n 小数点后的位数,同时打印多个数据类型double。但是,整数n必须从用户使用scanf()获取。
double pi = acos(-1);
int n;
printf("\nEnter the number of decimal digits required : ");
scanf("%d",&n);
现在,如何使用printf() 打印n pi 的小数位数?
【问题讨论】:
标签:
c
printf
double
format-specifiers
【解决方案1】:
引用C11,第 §7.21.6.1/p4 章,对于 precision 选项,
每个转换规范都由字符% 引入。在%之后,以下
依次出现:
- 一个可选的精度,提供 [...] 小数点后出现的位数
a、A、e、E、f 和 F 转换的字符,[...] 精度采用句点 (.) 的形式,后跟一个
星号*(稍后描述)或可选的十进制整数; [...]
并且,在第 5 段中,
如上所述,字段宽度或精度或两者都可以用星号表示。在
在这种情况下,一个 int 参数提供字段宽度或精度。论据
指定字段宽度,或精度,或两者,应(按顺序)出现在
要转换的参数(如果有)。 [...]
所以,你可以使用格式
printf("%.*f", precision, variable);
喜欢
printf("%.*f", n, pi);
使用来自用户的精度n。