【问题标题】: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 的小数位数?

【问题讨论】:

  • 通过sprintf()生成格式字符串?

标签: c printf double format-specifiers


【解决方案1】:

引用C11,第 §7.21.6.1/p4 章,对于 precision 选项,

每个转换规范都由字符% 引入。在%之后,以下 依次出现:

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

并且,在第 5 段中,

如上所述,字段宽度或精度或两者都可以用星号表示。在 在这种情况下,一个 int 参数提供字段宽度或精度。论据 指定字段宽度,或精度,或两者,应(按顺序)出现在 要转换的参数(如果有)。 [...]

所以,你可以使用格式

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

喜欢

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

使用来自用户的精度n

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多