我想知道将大纳秒价值转换为毫秒和纳秒的最准确方法,在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);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top