【发布时间】: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 位数字是默认值,最好指定它,这样您就知道要显示什么以及阅读代码的人。您不必记住默认值是什么。
-
%10e和%10.6e是等价的,因为如果缺少精度,则将其视为 6。但是,由于指数的形式为e+00(带有符号和至少2 位),%10e和%10.6e都在输出字段中产生至少 12 个字符,或者如果值为负数,则产生 13 个字符,或者如果指数的幅度大于 99(并且小于 1000),则产生 14 个字符。因此,指定10是愚蠢的;输出将始终超过 10 个字符宽。对于正值,您可以使用%10.4e获得 10 的宽度。