Java中的科学记数法

Posted

技术标签:

【中文标题】Java中的科学记数法【英文标题】:Scientific notation in Java 【发布时间】:2018-12-09 18:00:32 【问题描述】:
    System.out.println(Math.pow(10 , -10));

我写了这一行,输出应该是 10.0E-10 吧?但相反,它显示 1.0E-10 。这背后的原因可能是什么?

【问题讨论】:

怎么样?你愿意解释一下吗? 1 * 10^-10 是 Java 给你的。 @FaizanAhmad 请考虑接受您认为最好的答案。 【参考方案1】:

xey 表示 x*10^y。

Math.pow(10 , -10) 表示 10 的 -10 次方,或 10^-10。这等于 1*10^-10,用xey 表示法表示,就是1e-10

【讨论】:

【参考方案2】:

10.0E-10

意思

10.0 x 10-10

但是

Math.pow(10 , -10)

意思

10-10

如果您想以方便的方式使用 10.0E-10,请尝试

System.out.println(new BigDecimal("10.0E-10"));

输出:1.00E-9

System.out.println(Double.valueOf("10.0E-10"));

输出:1.0E-9

哪个最好取决于哪个考虑因素对您更重要。分别:忠实地将存储与以 10 为基数的表示或性能匹配。

【讨论】:

以上是关于Java中的科学记数法的主要内容,如果未能解决你的问题,请参考以下文章

Java中的紧凑数字格式化行为(在十进制和科学记数法之间自动切换)

Java中如何使用科学计数法

如何使java中double类型不以科学计数法表示

如何使java中double类型不以科学计数法表示

java代码怎么把科学计数法转换为具体数字

java字符串转数字如何不显示科学计数法