如何在将纳秒转换为毫秒时获得十进制结果



使用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;进行代码阅读,甚至更像散文。

最新更新