关于科学记数法一个很小的点

在做c后面练习题时,有个e+003。这里为什么会有0?网上是说e3也对,我就很好奇,计算机里对于这点有具体规定吗,处理成e+003相较于e3又有什么区别呢?

首先你要知道C标准和C编译器的区别,C标准是国际标准化组织ISO制定的最权威具有指导意义理论上的C语言规范;而C编译器是把你的C代码具体编译实际执行的二进制机器码的程序。关键在于二者有微妙的不同,C编译器为了方便程序员编程,没有完全实现C语言标准,而是都有自己的扩展,而且在如何实现C标准上,不同的编译器可能会有不同的逻辑。

  • 如果你想知道的是理论上C语言是如何认定一个数字是标准的C语言浮点数,请去查阅C语言标准,不管是C89,C99,C11,还是中国曾经起草过一份C89翻译稿的标准,它们的第6章都对C语言的数字做出了形式化的规定
  • 如果你想知道的是你的C语言编译器是如何对‘e+003’或‘e3’进行识别分析的请去找对应编译器自己的文档或者实现代码
  • 如果你想知道的是更通用的、理论基础上计算机如何对一个数字识别并分析,请去学习编译原理。

好像是一样的结果,只不过负号不能省略吧