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

问题描述 投票:0回答:2

我用这个代码:

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

这是我的输出:

173290
1.7329E-4

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

java scientific-notation
2个回答
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成为唯一的整数,使得10^n ≤ m < 10^n+1;然后让a成为m10^n的数学上精确的商,以便1 ≤ a < 10。然后将幅度表示为a的整数部分,作为单个十进制数字,接着是'.' ('\u002E'),接着是表示a的小数部分的十进制数字,接着是字母'E' ('\u0045'),接着是n表示为十进制整数,由Integer.toString(int)方法产生的。

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


1
投票

你应该考虑使用java.util.concurrent.TimeUnit。它更容易阅读,对错误更敏感。

TimeUnit.NANOSECONDS.toSeconds(timeInSeconds)
© www.soinside.com 2019 - 2024. All rights reserved.