Использование DecimalFormat для следующего случая - PullRequest
9 голосов
/ 06 февраля 2010

У меня ранее был следующий десятичный формат:

private static final DecimalFormat decimalFormat = new DecimalFormat("0.00");

Итак,

это может измениться:

0.1   -> "0.10"
0.01  -> "0.01"
0.001 -> "0.00"

Что я хочу, это

0.1   -> "0.10"
0.01  -> "0.01"
0.001 -> "0.001"

Возможно ли добиться этого, используя DecimalFormat?

Ответы [ 3 ]

22 голосов
/ 06 февраля 2010

Класс DecimalFormat не является "потокобезопасным". Поэтому вам лучше иметь статическую переменную String для этого формата, в то время как вы должны определить объект DecimalFormat в методе требуемого метода.

Статическая переменная:

private static final String decimalFormatStr = "0.00#";

.

Локальная переменная в методе:

DecimalFormat decimalFormat = new DecimalFormat(decimalFormatStr);
14 голосов
/ 06 февраля 2010

Да, используйте это:

new DecimalFormat("0.00######");

# означает, что цифра должна отображаться там, кроме конечных нулей. 0 означает, что цифра всегда отображается, даже если это конечный ноль. Количество десятичных разрядов в отформатированной строке не будет превышать общее число 0 с и # с после точки, поэтому в этом примере цифры после 8-го десятичного разряда будут усечены.

6 голосов
/ 06 февраля 2010

Вы можете сделать это так:

NumberFormat f = NumberFormat.getNumberInstance();
f.setMinimumFractionDigits(2);

System.out.println(f.format(0.1));
System.out.println(f.format(0.01));
System.out.println(f.format(0.001));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...