2016-03-01 2 views
-1

Как получить правильное время при вычитании десятичных чисел. Я хотел вычитать числа, как если бы это было время. Но время идет только до 60 минут, тогда как числа до 100. Как я могу наложить какое-то ограничение на десятичные знаки, чтобы сделать это как время.Округление десятичных знаков с определенным десятичным числом java

+0

Но серьезно сейчас, вы можете использовать modulo '%' – radoh

ответ

0

Вот один из способов. Истекшее время в миллисекундах, так как это то, что у вас есть, когда вы вычитаете начало System.currentTimeMillis() из финиша System.currentTimeMillis().

public String formatElapsedTime(long elapsedTime) { 
    int centiseconds = (int) (((elapsedTime % 1000L) + 5L)/10L); 
    centiseconds %= 10; 
    int seconds = (int) (elapsedTime/1000L); 
    int minutes = seconds/60; 
    seconds -= minutes * 60; 
    int hours = minutes/60; 
    minutes -= hours * 60; 

    if (hours > 0) { 
     return String.format("%2d:%02d:%02d.%02d", hours, minutes, seconds, 
       centiseconds); 
    } else if (minutes > 0) { 
     return String.format("%2d:%02d.%02d", minutes, seconds, 
       centiseconds); 
    } else { 
     return String.format("%2d.%02d", seconds, centiseconds); 
    } 
} 

Возможно, вам не нужно показывать сантисловы, когда вы измеряете прошедшее время в часах.

Потому что мои строки формата начинаются с «% 2d», секунд, минут и часов менее 10 имеют пробел в качестве первого символа строки. Я нахожу, что это держит дисплей от прыжков так много. Если вы не хотите занимать ведущее место, измените формат String на «% 1d».

Вы также можете рассчитать количество дней, в течение очень долгого времени. Вероятно, вам нужен формат «3 дня, 6 часов, 25 минут и 13 секунд». Или нет.

+0

Извините, что прокомментировал здесь, но я должен спросить, и это единственный способ выполнить ping: почему вы защитили http://stackoverflow.com/q/24062974/1849664? – Undo

+0

@Undo: Потому что кто-то с репутацией 1 написал комментарий в качестве ответа. Я отметил комментарий и защитил вопрос, чтобы человек с репутацией 1 не мог комментировать ответ снова. –

+0

Поймите, спасибо. Несколько лет назад [руководство было опубликовано] (https://blog.stackoverflow.com/2014/04/changes-and-guidelines-for-the-protected-question-status/), в котором говорится, что мы должны защищать их только там, где они имеют «долгую историю непроизводительных ответов», поэтому я спрашиваю. – Undo

Смежные вопросы