我用这个代码:
long elapsedTime = now - lastTime;
delta = ((double) elapsedTime) / 1000000000;
System.out.println(elapsedTime);
System.out.println(delta);
这是我的输出:
173290
1.7329E-4
这个输出给了我科学记数法,但我不知道它是什么。你能解释一下吗?为什么用科学记法双重打印?
你看到的输出是scientific notation。
在Java中,如果幅度小于10^-3
或大于10^7
,则双倍打印为科学记数法。
对于量级m
:
m
大于或等于10^-3
但小于10^7
,那么它表示为m
的整数部分,十进制形式,没有前导零,接着是'.' ('\u002E')
,后跟一个或多个小数位,代表m
的小数部分。m
小于10^-3
或大于或等于10^7
,则它以所谓的“计算机化科学记数法”表示。让n
成为唯一的整数,使得10^n ≤ m < 10^n+1;
然后让a
成为m
和10^n
的数学上精确的商,以便1 ≤ a < 10
。然后将幅度表示为a
的整数部分,作为单个十进制数字,接着是'.' ('\u002E')
,接着是表示a
的小数部分的十进制数字,接着是字母'E' ('\u0045')
,接着是n
表示为十进制整数,由Integer.toString(int)
方法产生的。由于1.7329E-4
的输出量为10^-4
,因此它属于第二类,如上所列。
你应该考虑使用java.util.concurrent.TimeUnit
。它更容易阅读,对错误更敏感。
TimeUnit.NANOSECONDS.toSeconds(timeInSeconds)