什么是科学记数法?为什么在Java中用科学记数法双重打印?

时间:2017-05-17 13:20:26

标签: java scientific-notation

我使用此代码:

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

这是我的输出:

173290
1.7329E-4

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

2 个答案:

答案 0 :(得分:2)

您看到的输出是scientific notation

在Java中,如果幅度小于10^-3或大于10^7,则双倍打印为科学记数法。

Double#toString() javadocs

对于幅度m

  • 如果m大于或等于10^-3但小于10^7,那么它是 表示为m的整数部分,以十进制形式表示,没有前导 零,后跟'.' ('\u002E'),后跟一个或多个小数 表示m的小数部分的数字。
  • 如果m小于10^-3或大于或等于10^7,那么它是 以所谓的“计算机化科学记数法”代表。让n成为。{1}} 唯一的整数,10^n ≤ m < 10^n+1;然后让a成为。{1}} m10^n的数学上精确的商,以便1 ≤ a < 10。该 然后将幅度表示为a的整数部分,作为单个 十进制数字,后跟'.' ('\u002E'),后跟十进制数字 表示a的小数部分,后跟字母'E' ('\u0045'),后跟n的十进制整数表示, 由方法Integer.toString(int)生成。

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

答案 1 :(得分:1)

您应该考虑使用File.ReadAllLines(FILE)。它更容易阅读,对错误更敏感。

java.util.concurrent.TimeUnit