【问题标题】:printf %e scientific notation giving wrong value in Cprintf %e 科学记数法在 C 中给出错误值
【发布时间】:2015-08-21 05:06:53
【问题描述】:

我正在打印一个非常基本的科学记数法。

但是,在我看来它不起作用,我不知道为什么?

代码:

size_t result = 0;
printf("%e \n",result);

它打印的值如下:

1.278341e-307

科学记数法的正确方法是什么?

【问题讨论】:

  • 这看起来像是机器精度的舍入误差。
  • 解决方案建议答案应该是 0.000000e+000 - 如何实现并克服舍入误差?
  • 为什么要以科学计数法输出size_t
  • 程序无效。将警告旋钮转到 11,然后将其留在那里。你的编译器会告诉你。
  • Dude - printf %e 是一个整数值吗?真的???

标签: c printf scientific-notation


【解决方案1】:

如果您使用浮点 printf 格式代码,例如 %e,匹配的参数必须是 double。但是您传递给它的是一个整数 (size_t)。

Printf 不知道其参数的类型,因此您必须使用正确的格式代码告诉它它们是什么。如果你撒谎,你会得到不确定的结果。

如果您使用 gcc 或 clang,请始终使用-Wall 命令行选项并阅读警告。这将为我们大家省去很多麻烦。

【讨论】:

  • 知道了——谢谢你的解释——看来我需要阅读 printf 格式,不能想当然:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多