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

时间:2014-07-07 12:18:55

标签: java timeunit

使用TimeUnit,如何将665477纳秒转换为0.665477毫秒?

long t = TimeUnit.MILLISECONDS.convert(665477L, TimeUnit.NANOSECONDS);

这总是给出0,但我需要小数点精度。

4 个答案:

答案 0 :(得分:7)

来自Java文档 - TimeUnit#convert

public long convert(long sourceDuration,TimeUnit sourceUnit)
  

将给定单位的给定持续时间转换为此单位。   从更精细到更粗糙的粒度的转换会截断,因此会丢失   精确。例如,将999毫秒转换为秒结果   in 0.使用参数从较粗粒度到较细粒度的转换   如果是负数,那么数字溢出会饱和到Long.MIN_VALUE   或Long.MAX_VALUE,如果是肯定的。

所以得到你的答案

double milliseconds = 665477 / 1000000.0;

答案 1 :(得分:3)

除以1,000,000:

double millis = 665477 / 1000000.0;

使用TimeUnit,您只能获得整数结果。

答案 2 :(得分:3)

您可以手动计算

double mil = 665477L/1_000_000.0

答案 3 :(得分:2)

更短且更不容易出错:

double millis = 665477 / 1E6;

毫 - - > mikro - >纳米

是两步,每一步都有1000 = 1E3的转换faktor; 因此,通过计算零,可以使一百万个更容易被读作1E6。