使用TimeUnit
,如何将 665477 纳秒转换为 0.665477 毫秒?
long t = TimeUnit.MILLISECONDS.convert(665477L, TimeUnit.NANOSECONDS);
这总是给出,0
但我需要小数点精度。
来自 Java 文档 - TimeUnit#convert
public long convert(long sourceDuration,TimeUnit sourceUnit)
将给定单位中的给定持续时间转换为此单位。从更细粒度到更粗粒度的转换会截断,因此会丢失精度。例如,将 999 毫秒转换为秒会导致 0。从粗粒度到细粒度的转换,如果参数为负数,则会在数值上溢出饱和到 Long.MIN_VALUE,如果是正数,则为 Long.MAX_VALUE。
所以要得到你的答案
double milliseconds = 665477 / 1000000.0;
更短,更不容易出错:
double millis = 665477 / 1E6;
毫 -> 米克罗 -> 纳米
是两个步骤,每个步骤的转换因子为 1000 = 1E3;因此,比数零更容易理解为 1E6 的一百万。
只需除以 1,000,000:
double millis = 665477 / 1000000.0;
与TimeUnit
您只会得到一个整数结果。
您可以手动计算
double mil = 665477L/1_000_000.0