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

Pet*_*jao 5 java timeunit

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

long t = TimeUnit.MILLISECONDS.convert(665477L, TimeUnit.NANOSECONDS);
Run Code Online (Sandbox Code Playgroud)

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

Nin*_*ale 7

来自Java Documentation - TimeUnit #convert

public long convert(long sourceDuration,TimeUnit sourceUnit)
Run Code Online (Sandbox Code Playgroud)

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

所以得到你的答案

double milliseconds = 665477 / 1000000.0;
Run Code Online (Sandbox Code Playgroud)


Ale*_*ien 6

更短且不易出错:

double millis = 665477 / 1E6;
Run Code Online (Sandbox Code Playgroud)

毫 -> 微米 -> 纳米

分为两步,每步的转换系数为1000 = 1E3;因此等于一百万,比计数零更容易读作 1E6。