Система nanoTime() имеет два конечных нуля.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Система nanoTime() имеет два конечных нуля.

Сообщение Anonymous »

Я написал код, используя System.nanoTime(), и в выводе всегда было два конечных нуля. Теперь я задавался вопросом, нормально ли такое поведение. Я попробовал это на двух ноутбуках, и результат всегда оставался таким неточным, хотя я помню, что где-то в прошлом видел конкретное точное значение System.nanoTime().
Вот вот код:

Код: Выделить всё

        long beginTime = System.nanoTime();

for (int i = 0; i < 5; i++) {
// doing something for time to pass
long tpValue = 1;
for (int j = 0; j < 14862; j++) {
long value = 0x4b38e;
value &= System.nanoTime();
tpValue = (tpValue & value) | (tpValue ^ value);
}
long timePassed = System.nanoTime() - beginTime;
System.out.println("Time passed: " + timePassed + " ns;" +
" Value calculated to pass time: " + tpValue);
}
В этом примере на моем устройстве значение tpValue всегда будет одинаковым, если я не разделю System.nanoTime() на 1000.Вот результат:

Прошло время: 921000 нс; Рассчитанное значение времени прохождения: 308109
Прошедшее время: 9554500 нс; Рассчитанное значение времени прохождения: 308109
Прошедшее время: 10551800 нс; Рассчитанное значение времени прохождения: 308109
Прошедшее время: 11530700 нс; Рассчитанное значение времени прохождения: 308109
Прошедшее время: 12519400 нс; Рассчитанное значение для прохождения времени: 308109


Подробнее здесь: https://stackoverflow.com/questions/792 ... ling-zeros
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»