2015-11-14 2 views
0

В принципе, я использую app42 для хранения баллов для игры. Однако моя игра использует времена.Преобразование Bigdecimal в Timeformat для строки

Например. Если я представить оценку 0: 3: 85 (0 часов, 3 секунды и 85 миллисекунд)

это будет храниться в BigDecimal как 385.

Когда я получить мой счет я получить его как 385, Я понятия не имею, как я могу преобразовать его обратно в свой формат времени. Пример: enter image description here

В какой-то момент я использую функцию для подсчета количества цифр.

int getNumberOfDecimalPlaces(BigDecimal bigDecimal) { 
    String string = bigDecimal.toPlainString(); 
    int index = string.length(); 
    return index; 
} 

то, чтобы на самом деле это исправить, я в недоумении. Im думая, что-то вдоль линий

private String ConvertScore(BigDecimal Score){ 
    int Len = getNumberOfDecimalPlaces(Score); 
    String Convert = Score.toString(); 
    String Finished; 
    if(Len == 1){ 
    } 
    else if(Len == 2){ 

    } 
    else if(Len == 3) 
    { 
     Finished 
    } 
    return Finished; 
} 

, но если честно, я даже не могу думать, как я бы это сделать.

Благодаря

+0

Почему вы храните его в «BigDecimal»? – RealSkeptic

+0

Потому что это тип данных API, который я использую для рекордов. Ссылка есть, если она помогает http://api.shephertz.com/app42-docs/leaderboard-service/#save-user-score –

+0

Так почему бы вам не использовать что-то более логичное, как преобразование времени в миллисекунды? – RealSkeptic

ответ

1

Поправьте меня, если я ошибаюсь, но ваш API, что вы используете возвращает вас счетом игры (а не, а не времени. И вы не будете иметь возможность преобразовать его правильно. Потому что там может быть разным счетом.

Например, как преобразовать 10345?

10 hours3 seconds и 45 milliseconds

ИЛИ

это 103 hours0 seconds и 45 milliseconds и так далее.

+0

Да, он возвращает счет, который преобразуется из времени. То, что я думал, состоит в том, что он может быть преобразован по коротким значениям, поэтому, если это 2 цифры, миллисекунды, если его 3 или 4 секунды, если его больше минут и т. Д. –

+0

@RhysDrury Хм, но как предсказать (из примера 10345) составляет ли это 345 миллисекунд или 45 или 5 миллисекунд? :) –

+0

Ну, как он рассчитывается, так это int secs = (int) (updatedTime/1000); int mins = secs/60; secs = secs% 60; int milliseconds = (int) (updatedTime% 100); который находится из UpdateTime, который находится из моего таймера. Есть ли способ сохранить форматирование одинаковым в большом десятичном значении, например, сохранить значение 0, так что в вашем примере это будет 10.03.45 в течение 10 минут 3 секунды и 45 миллисекунд? –