Следующий кодНет 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?] (Http://stackoverflow.com/questions/703396/how-to-nicely -format-floating-numbers-to-string-without-needecessary-decimal-0) – icza