5

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

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

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

4

4 回答 4

7

来自 Java 文档 - TimeUnit#convert

public long convert(long sourceDuration,TimeUnit sourceUnit)

将给定单位中的给定持续时间转换为此单位。从更细粒度到更粗粒度的转换会截断,因此会丢失精度。例如,将 999 毫秒转换为秒会导致 0。从粗粒度到细粒度的转换,如果参数为负数,则会在数值上溢出饱和到 Long.MIN_VALUE,如果是正数,则为 Long.MAX_VALUE。

所以要得到你的答案

double milliseconds = 665477 / 1000000.0;
于 2014-07-07T12:20:37.427 回答
5

更短,更不容易出错:

double millis = 665477 / 1E6;

毫 -> 米克罗 -> 纳米

是两个步骤,每个步骤的转换因子为 1000 = 1E3;因此,比数零更容易理解为 1E6 的一百万。

于 2014-07-07T13:16:20.143 回答
3

只需除以 1,000,000:

double millis = 665477 / 1000000.0;

TimeUnit您只会得到一个整数结果。

于 2014-07-07T12:22:25.217 回答
3

您可以手动计算

double mil = 665477L/1_000_000.0
于 2014-07-07T12:22:59.117 回答