java - 为什么在 Double 中添加了指数科学计数法
问题描述
为什么指数在java中加倍?例如:10000000 (10^7) in java double : 1.0E7
为什么这个E?
解决方案
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已经切换到科学计数法?
可能是因为他们想要float
和double
同时切换,并且float
只有大约 7 位数的精度。这样它就永远不会打印由于缺乏精度而导致的尾随零。
推荐阅读
- c# - 为什么 Google Actions 无法收到我的 BasicCard?
- javascript - 使用 Cypress 检测 Openlayers 功能
- c++ - C++ 检查 std::array 或 unordred_map/map 是否包含相同的元素类型
- javascript - 消息:javascript 错误:无法在“文档”上执行“elementsFromPoint”:提供的双精度值是非有限的
- node.js - 如何在 MongoDB 中使用正则表达式查找数组中的字符串。?
- postgresql - jooQ + JPA + Hibernate + postgresql 有强制转换问题 (::)。错误:“:”处或附近的语法错误
- php - 如何使用simplehtmldom从这个页面中提取数据
- docker - 无法使用 MockServer 建立 TLS:curl: (60) Peer's Certificate issuer is not Recognized
- python - .fillna 清空整个列而不是替换空值
- javascript - 向drawimage添加过渡