首页 > 解决方案 > 为什么在 Double 中添加了指数科学计数法

问题描述

为什么指数在java中加倍?例如:10000000 (10^7) in java double : 1.0E7

为什么这个E?

标签: java

解决方案


java为什么加倍指数?

因为这就是他们定义Double.toString(double d)方法的方式,如文档所述。

他们为什么这样定义它?

因为 adouble可以将值存储在4.9e-324( Double.MIN_VALUE) 到1.7976931348623157e308( Double.MAX_VALUE) 范围内。由于它只有大约 17 位的精度,如果没有以科学记数法格式化,这些极值将被格式化为大约 300 个零。看看会有用吗?

让我们看一个例子。这些哪个更有用?

请参阅问题我们的太阳系中有多少个原子?
答案:1.2 ⋅ 10 57

在 Java 中,可以打印为:

  • 科学计数法:1.2E57
  • 十进制表示法:1200000000000000000000000000000000000000000000000000000000

其中哪些更容易阅读和解释?


更新

为什么它在 10 7已经切换到科学计数法?

可能是因为他们想要floatdouble同时切换,并且float只有大约 7 位数的精度。这样它就永远不会打印由于缺乏精度而导致的尾随零。


推荐阅读