abh*_*hek 2 c double printf format-specifiers
我想打印n一些数据类型时打印十进制后的位数double.但是,n必须从用户使用获得整数scanf().
double pi = acos(-1);
int n;
printf("\nEnter the number of decimal digits required : ");
scanf("%d",&n);
Run Code Online (Sandbox Code Playgroud)
现在,如何使用printf()打印npi的十进制数字?
引用C11,章节§7.21.6.1/ p4,关于精度选项,
每个转换规范由角色引入
%.之后%,以下顺序出现:
- 一个可选的精度,让[...]为小数点字符之后出现的位数
a,A,e,E,f,和F转换,[...]精度采用周期的形式(.),随后或者通过一个星号*(稍后描述)或可选的十进制整数; [...]
并在第5段中,
如上所述,字段宽度或精度或两者可以用星号表示.在这种情况下,int参数提供字段宽度或精度.指定字段宽度或精度或两者的参数应在要转换的参数(如果有)之前(按此顺序)出现.[...]
所以,你可以使用这种格式
printf("%.*f", precision, variable);
Run Code Online (Sandbox Code Playgroud)
喜欢
printf("%.*f", n, pi);
Run Code Online (Sandbox Code Playgroud)
使用n从用户获得的精度.