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返回类型可移植

printf格式化字符输出对应解释

将文件中的值读入数组会导致分段错误,C

printf中的%c,%d,%u........都分别代表输出的是啥类型的?

printf函数的类型转换问题

c语言从键盘上输入一个科学计数法的数