什么是科学记数法,为什么在 Java 中双印科学记数法?

What is a scientific notation and why is double printed in scientific notation in Java?

我使用这个代码:

long elapsedTime = now - lastTime;
delta = ((double) elapsedTime) / 1000000000;
System.out.println(elapsedTime);
System.out.println(delta);

这是我的输出:

173290
1.7329E-4

这个输出给了我科学记数法,但我不知道它是什么。你能解释一下吗?为什么要用科学记数法双印?

您应该考虑使用 java.util.concurrent.TimeUnit。它更易于阅读且不易出错。

TimeUnit.NANOSECONDS.toSeconds(timeInSeconds)

您看到的输出是 scientific notation

在Java中,如果量级小于10^-3或大于10^7.

,则双精度打印为科学记数法

Double#toString() javadocs

星等 m:

  • 如果m大于等于10^-3但小于10^7,则为 表示为 m 的整数部分,无前导的十进制形式 零,后跟 '.' ('\u002E'),后跟一位或多位小数 代表 m.
  • 小数部分的数字
  • 如果m小于10^-3或大于等于10^7,则为 表示为所谓的 "computerized scientific notation." 设 n 为 唯一的整数使得 10^n ≤ m < 10^n+1; 然后让 a 成为 m10^n 的数学精确商,因此 1 ≤ a < 10。这 然后将 magnitude 表示为 a 的整数部分,作为单个 十进制数字,后跟 '.' ('\u002E'),后跟十进制数字 表示 a 的小数部分,后跟字母 'E' ('\u0045'),然后是 n 的十进制整数表示, 由方法 Integer.toString(int).
  • 生成

由于 1.7329E-4 的输出量级为 10^-4,因此它属于第二类,如上所列。