printf %e 科学记数法在 C 中给出错误值
Posted
技术标签:
【中文标题】printf %e 科学记数法在 C 中给出错误值【英文标题】:printf %e scientific notation giving wrong value in 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 是一个整数值吗?真的???
【参考方案1】:
如果您使用浮点 printf 格式代码,例如 %e
,匹配的参数必须是 double
。但是您传递给它的是一个整数 (size_t
)。
Printf 不知道其参数的类型,因此您必须使用正确的格式代码告诉它它们是什么。如果你撒谎,你会得到不确定的结果。
如果您使用 gcc 或 clang,请始终使用-Wall
命令行选项并阅读警告。这将为我们大家省去很多麻烦。
【讨论】:
知道了——谢谢你的解释——看来我需要阅读 printf 格式,不能想当然:)以上是关于printf %e 科学记数法在 C 中给出错误值的主要内容,如果未能解决你的问题,请参考以下文章
C连载18-转换说明,转换说明修饰符sizeof返回类型可移植