DecimalFormat неправильно форматирует мои числа

#java #android #math #decimalformat

#java #Android #математика #decimalformat

Вопрос:

Я хочу округлить все мои числа до 1 знака после запятой.

Например

 22.0
-6.1
  

Я использую:

 DecimalFormat decimalFormat = new DecimalFormat("0.0");
middlePanelTextView.setText(decimalFormat.format(score.getElevationAngle()));
  

Но к целым числам не добавляется 0.

 -18 should be -18.0 etc.
  

вместо этого мое значение отображается как -18.

Комментарии:

1. Есть ли вероятность, что middlePanelTextView это сокращает текст? Правильно ли отображается -18.5? Кроме того, не могли бы вы попробовать это: DecimalFormat decimalFormat = new DecimalFormat("0.0", new DecimalFormatSymbols(Locale.ENGLISH));

2. Какой тип значения возвращает метод score.getElevationAngle() ?

3. score.getElevationAngle() возвращает двойное

4. Для меня ваш код работает отлично и возвращает -18.0 при присвоении ему значения -18.

5. Шихан Алам:) Это работает именно так, как говорит Лиро. Я протестировал это. Должны быть некоторые другие ошибки.

Ответ №1:

.@ представляет значащую цифру 0, а не.
.# представляет собой необязательную цифру, поэтому попробуйте «# # @.@»

http://developer.android.com/reference/java/text/DecimalFormat.html

Я не уверен в синтаксисе: но приведенная выше статья должна дать вам все, что вам нужно.

Ответ №2:

Попробуйте

 middlePanelTextView.setText("" decimalFormat.format(score.getElevationAngle()));
  

Ответ №3:

Мой TextView отключал цифры. Моя ошибка. Уменьшенный размер шрифта.

Ответ №4:

Попробуйте использовать

 DecimalFormat decimalFormat = new DecimalFormat("#.#");
  

вместо этого в качестве параметра конструктора.

Комментарии:

1. Пожалуйста, прочитайте OP еще раз, он хочет получить ноль, поэтому # здесь неверный шаблон.

Ответ №5:

Попробуйте использовать следующий код:

 DecimalFormat decimalFormat = new DecimalFormat("0.0#");