代码之家  ›  专栏  ›  技术社区  ›  Chris Dennett

Java中纳秒到毫秒和纳秒的转换<999999

  •  17
  • Chris Dennett  · 技术社区  · 14 年前

    我想知道把一个大纳秒值转换成毫秒和纳秒的最准确的方法是什么,纳秒的上限是999999。我们的目标是结合纳秒和毫秒的值,以确保最大可能的分辨率与给定的限制。这是为了与sleep/wait方法和其他一些给出大纳秒值的外部库进行比较。

    编辑:我的代码现在如下所示:

    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) {
    
            }
        }
    }
    

    干杯, 克里斯

    3 回复  |  直到 14 年前
        1
  •  24
  •   Ignacio Vazquez-Abrams    14 年前

    就拿它的divmod和1000000。

        2
  •  85
  •   Luhar    11 年前

    为什么不使用内置的Java方法呢。时间单位是并发包的一部分,因此完全按照您的需要构建

      long durationInMs = TimeUnit.MILLISECONDS.convert(delayNS, TimeUnit.NANOSECONDS);
    
        3
  •  76
  •   Ibrahim Arief    10 年前

    使用 java.util.concurrent.TimeUnit ,相当于肖恩在上面写的,你可以使用:

        long durationInMs = TimeUnit.NANOSECONDS.toMillis(delayNS);