2014-09-05 6 views
0

Следующий кодНет pointation на двойное значение

private double roundTheReading(double toRoundValue) { 
    double roundetValue = 0; 
    if (formatter == null){ 
    DecimalFormatSymbols dfs = new DecimalFormatSymbols(); 
    dfs.setDecimalSeparator('.'); 
    formatter = new DecimalFormat(("#0." + zerosAfterDot),dfs); 
    } 
    roundetValue = Double.parseDouble(formatter.format(toRoundValue)); 
    return roundetValue; 
} 

делает укорочение двойной «toRoundValue», потому что имущие 9 после того, как точечные символы и мне нужно только 0, 1 или 2 из них (устанавливается zerosAfterDot методом ввода).

Проблема: если zerosAfterDot является «0», ответ должен быть 5 или 3421. Я получаю. и 1 ноль каждый раз (5,0 3421,0).

дозы этого что-то делать с линией:

formatter = new DecimalFormat(("#0." + zerosAfterDot),dfs); 

ли точка в этой линии точки я получаю в моем выходе? Если так, я могу сделать If(), что проверяет, равен ли значение fter точка нулю. Но я бы предпочел не делать этого, потому что он также убил бы Dot, если zerosAfterDot> 0. И я хочу обойти многие операторы if.

TL, DR Как избавиться от "." когда у меня нет цифр, которые значимы?

+0

возможный дубликат [Как красиво форматировать числа с плавающей в строку без лишних десятичного 0?] (Http://stackoverflow.com/questions/703396/how-to-nicely -format-floating-numbers-to-string-without-needecessary-decimal-0) – icza

ответ

0

Возможно, вы указали значение double, полученное от roundTheReading, которое всегда будет включать в себя незначительные цифры. Вместо этого вы можете вернуть String и использовать

formatter = new DecimalFormat(("0.#"); 
+0

Значение используется другими способами, поэтому возврат String не самый лучший способ, потому что мне нужно выводить его обратно каждый раз, когда я хочу использовать Это. Но я могу дать UI строку в методе getter. его простой ответ, о котором я не думал, пока не увижу твое. Спасибо за это! – Fulli

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