c-如何控制双变量小数点字符后的位数



在打印数据类型为double的数字时,我希望打印小数后的n数字。但是,整数n必须使用scanf()从用户处获得。

double pi = acos(-1);
int n;
printf("nEnter the number of decimal digits required : ");
scanf("%d",&n);

现在,如何使用printf()打印π的小数位数n

引用C11,第7.21.6.1/p4章,对于精度选项,

每个转换规范都由字符%引入。%之后按顺序出现:

  • 一个可选精度,给出小数点后出现的位数[…]用于aAeEfF转换的字符,[…]精度采用句点(.)的形式,后跟星号*(稍后描述)或可选的十进制整数;[…]

,在第5段中,

如上所述,字段宽度或精度或两者都可以用星号表示。在里面在这种情况下,int参数提供字段宽度或精度。论据在要转换的参数(如果有)。[…]

因此,您可以使用格式

printf("%.*f", precision, variable);

printf("%.*f", n, pi);

以使用从用户获取的精度CCD_ 18。

最新更新