在Java中将纳秒秒转换为毫秒和纳秒<999999
-
29-09-2019 - |
题
我想知道将大纳秒价值转换为毫秒和纳秒的最准确方法,在9999999的纳米秒上具有上限。目标是结合纳米秒和毫秒值,以确保最大值的分辨率与极限的最大分辨率相结合。给出。这是为了与睡眠 /等待方法和一些其他外部库的可比性,这些库会散发出较大的纳秒值。
编辑:我的代码如下如下:
while (hasNS3Events()) {
long delayNS = getNS3EventTSDelay();
long delayMS = 0;
if (delayNS <= 0) runOneNS3Event();
else {
try {
if (delayNS > 999999) {
delayMS = delayNS / 1000000;
delayNS = delayNS % 1000000;
}
EVTLOCK.wait(delayMS, (int)delayNS);
} catch (InterruptedException e) {
}
}
}
欢呼,克里斯
解决方案
只需使用1000000的Divmod。
其他提示
为什么不使用内置的Java方法。 TimeUnit是并发包的一部分,因此完全适合您需要
long durationInMs = TimeUnit.MILLISECONDS.convert(delayNS, TimeUnit.NANOSECONDS);
用于使用的转换 java.util.concurrent.TimeUnit
, ,相当于肖恩(Shawn)上面写的内容,您可以使用:
long durationInMs = TimeUnit.NANOSECONDS.toMillis(delayNS);
不隶属于 StackOverflow