【问题标题】:Stop printf from padding exponent [duplicate]从填充指数停止 printf [重复]
【发布时间】:2019-09-15 09:32:25
【问题描述】:

当我使用这个时:

printf("%e", 2000.0);

我得到了2.000000e+003 的输出,这是正确的,但非常难看。然后我尝试这样:

printf("%.1e", 2000.0);

哪个输出2.0e+003 要好得多。问题是如何删除指数中的 2 个填充零,以便输出为2.0e+3。是否有特定的 printf 说明符,或者我必须手动编写一个函数来分析浮点数并按照我想要的方式打印它(我不想这样做)?

【问题讨论】:

  • 检查您的系统版本man 3 printf。转换说明符e, E 可以保存此信息。就我而言,exposant 将始终包含至少两位数字。
  • 你确定第一个版本的输出是“2.000000e+003”吗?根据 C 标准,“指数始终包含至少两位数字,并且仅包含表示指数所需的更多数字。” (C 2018 7.21.6.1 8.)

标签: c


【解决方案1】:

printf 的标准 C 功能不提供任何控制指数位数的方法。如果您想要不同的格式,您将不得不编写自己的代码或从其他地方获取代码。

%a 转换确实只使用了所需的指数中的数字,但它使用十六进制打印值。)

【讨论】:

  • 详细信息:"%a" 以十进制打印(以 2 为底的)指数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-03-27
  • 1970-01-01
  • 1970-01-01
  • 2017-10-04
  • 1970-01-01
  • 2012-02-21
  • 1970-01-01
相关资源
最近更新 更多