Java: Как получить время с помощью currentTimeMillis () как долго, как мне вывести его с точностью до десятичного знака X? - PullRequest
3 голосов
/ 25 сентября 2011

У меня есть длинная, которая представляет System.currentTimeMillis(). Затем я сделал еще одно измерение времени в длинную переменную позже в моем коде. Я вычел два, но теперь хочу видеть это время с 3 десятичными знаками.

В настоящее время я использую %d для форматирования вывода при печати длинных переменных и получения только недесятичных значений.

Ответы [ 2 ]

9 голосов
/ 25 сентября 2011

long - это целое число.У него нет десятичных разрядов.Вы имеете в виду, что хотите видеть секунды с точностью до трех десятичных знаков?

long start = System.currentTimeMillis();

long time = System.currentTimeMillis() - start;
System.out.printf("Took %.3f%n", time/1e3);

Вы можете сделать то же самое с nanoTime, но это все еще целое число.Если вы хотите увидеть десятичные разряды, вам нужно разделить на 1e3 (микросекунды) или 1e6 (миллисекунды) или 1e9 (секунды)

4 голосов
/ 25 сентября 2011

Вам нужно разделить число на 1000.0 и затем отобразить его, используя "%.3f". Так что-то вроде

String.format("%.3f", number / 1000.0)

Вам нужно разделить на double, потому что вы хотите удвоить. Если вы делите на int, то оно округляется до ближайшего целого. Вы не можете использовать %d, потому что он используется только для отображения целых чисел. Вы должны использовать %f для поплавков и удвоений.

...