Нет указателя на двойное значение
Следующий код
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(), который проверяет, является ли значение после точки ноль. Но я бы предпочел не делать этого, потому что это также убило бы Dot, если zerosAfterDot > 0. И я хочу обойти многие операторы if.
TL, DR Как мне избавиться от "." когда у меня нет следующих чисел, которые являются значительными?
1 ответ
Вы, вероятно, отображаете double
значение, возвращаемое из roundTheReading
который всегда будет содержать незначимые цифры. Вместо этого вы можете вернуть String
и использовать
formatter = new DecimalFormat(("0.#");