【问题标题】:E notation in CC 中的 E 表示法
【发布时间】:2015-04-28 12:10:21
【问题描述】:

我正在阅读 C Programming - A modern approach,我偶然发现了关于 E-notation 的部分。我很难理解它们。

取以下代码:

printf("%12.5e", 30.253);

这导致以下输出:

3.02530e+01

有人能解释一下这是如何工作的吗?数字 12 在这里表示什么?

【问题讨论】:

    标签: c scientific-notation


    【解决方案1】:

    printf "%12.5e" 格式指示printfdouble(或float)参数转换为以指数表示的字符串,在. 之后有5 个数字,总共至少12 个字符.在您的示例中,输出实际上在数字之前包含一个额外的空格:3.02530e+01 总共有 12 个字符。为了更明显,您可以尝试:

    printf("|%12.5e|\n", 30.253);
    

    并验证输出是:

    | 3.02530e+01|
    

    printf() 生成的指数表示法总是在. 之前使用一个数字和一个代表10 的幂的指数(此处为e+01)与该数字相乘。这是科学界常用的一种表示法:

    30.12 is the same as 3.012e1 or 3.012e+01
    0.0012 is the same as 1.2e-3
    

    您可以使用此语法在您的C 源代码中编写浮点常量。

    【讨论】:

    • 谢谢。但是为什么要在数字三之后去掉零,放在逗号之后呢?
    • 这就是科学记数法的概念。 . * 10^.
    【解决方案2】:

    "%12.5e" 表示:

    (格式为%[flag][minimumFieldWidth][.precision]conversionSpecifier

    • 12: [minimumFieldWidth] 结果应占 12 个字符(默认右对齐)
    • .5:[.precision] 结果应保留 5 位小数
    • e: [conversionSpecifier] 结果将采用指数表示法

    您可以尝试使用该值并亲自查看输出如何变化。

    见:http://en.wikipedia.org/wiki/Printf_format_string

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-17
      • 1970-01-01
      • 2015-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-16
      • 1970-01-01
      相关资源
      最近更新 更多