我使用以下代码:

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,则将double打印为科学计数法。

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,因此属于上面列出的第二类。

09-11 18:48
查看更多