Pregunta

Me pregunto cuál es la forma más precisa de la conversión de un gran valor nanosegundos es milisegundos y nanosegundos, con un límite superior en los nanosegundos de 999999. El objetivo es combinar los nanosegundos y valores milisegundos para asegurar la máxima resolución posible con el límite dado. Esto es para la comparación con los métodos de sueño / de espera y alguna otra biblioteca externa que da un vistazo a los valores grandes de nanosegundos.

Edit: Mi código tiene el siguiente ahora:

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

        }
    }
}

Cheers, Chris

¿Fue útil?

Solución

Simplemente tome el DIVMOD de ella con 1,000,000.

Otros consejos

¿Por qué no utiliza el incorporado en los métodos de Java. El TimeUnit es parte del paquete de modo concurrente construida exactamente para sus necesidades

  long durationInMs = TimeUnit.MILLISECONDS.convert(delayNS, TimeUnit.NANOSECONDS);

Para una conversión cada vez más cortos usando java.util.concurrent.TimeUnit, equivalente a lo que Shawn escribió más arriba, puede utilizar:

    long durationInMs = TimeUnit.NANOSECONDS.toMillis(delayNS);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top