使用TimeUnit
,如何将665477纳秒转换为0.665477毫秒?
long t = TimeUnit.MILLISECONDS.convert(665477L, TimeUnit.NANOSECONDS);
这总是给出0
,但我需要小数点的精度。
从Java文档-TimeUnit#转换
public long convert(long sourceDuration,TimeUnit sourceUnit)
将给定单位中的给定持续时间转换为此单位。从细粒度到粗粒度的转换截断,因此丢失精确例如,将999毫秒转换为秒的结果在0中。从粗粒度到细粒度的转换(带自变量(如果为负数,则数值溢出饱和为Long.MIN_VALUE如果为正,则为Long.MAX_VALUE。
所以为了得到你的答案
double milliseconds = 665477 / 1000000.0;
更短且不易出错:
double millis = 665477 / 1E6;
milli->mikro->纳米
是两个步骤,每个步骤具有1000=1E3的转换faktor;因此,100万,可以更容易地读取为1E6,而不是通过计算零。
只需除以1000000:
double millis = 665477 / 1000000.0;
使用TimeUnit
,您将只得到一个整数结果。
您可以手动计算此
double mil = 665477L/1_000_000.0
double milliSeconds = nanoSeconds / (double) TimeUnit.MILLISECONDS.toNanos(1);
因此,您不必在代码中放入神奇的数字1_000_000.0,也不必记住正确的比率以确保没有错误:行是非常自我验证的。
您可以import static java.util.concurrent.TimeUnit.MILLISECONDS;
进行代码阅读,甚至更像散文。