【问题标题】:Is it necessary to use the ".6" precision specifier when using "%e" in printf?在 printf 中使用“%e”时是否需要使用“.6”精度说明符?
【发布时间】:2021-03-07 10:42:39
【问题描述】:

我在我的 C 编程书上遇到了这个问题:

编写 printf 调用,以下列格式显示浮点变量 x:

b) 指数符号:在大小为 10 的字段中右对齐;小数点后六位。

如果我是对的,答案应该是printf("%10e", x);,因为e 格式说明符中的默认精度是小数点后6 位小数(就像浮点格式说明符一样)。这就是为什么我根本没有精确.6

但是这本书有一个不同的答案,它说printf("%10.6e", x); 就是答案。使用e说明符表示浮点后6位小数时是否需要写.6精度?

【问题讨论】:

  • 即使 6 位数字是默认值,最好指定它,这样您就知道要显示什么以及阅读代码的人。您不必记住默认值是什么。
  • 你读过printf(3) 吗?您是否使用 GCC 编译您的 C 代码并调用为 gcc -Wall -Wextra -g
  • %10e%10.6e 是等价的,因为如果缺少精度,则将其视为 6。但是,由于指数的形式为 e+00(带有符号和至少2 位),%10e%10.6e 都在输出字段中产生至少 12 个字符,或者如果值为负数,则产生 13 个字符,或者如果指数的幅度大于 99(并且小于 1000),则产生 14 个字符。因此,指定10 是愚蠢的;输出将始终超过 10 个字符宽。对于正值,您可以使用 %10.4e 获得 10 的宽度。

标签: c printf


【解决方案1】:

使用e说明符表示浮点后6位小数时,是否需要写0.6精度?

不,实际上默认精度是 6。

【讨论】:

    猜你喜欢
    • 2017-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-23
    • 2011-07-18
    • 1970-01-01
    • 2013-05-26
    相关资源
    最近更新 更多