Нет указателя на двойное значение

Следующий код

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.#");
Другие вопросы по тегам