Основной класс используется: java.text.decimalformat
1 Чтобы создать создание объекта, вы можете использовать следующие два метода:
Кода -копия выглядит следующим образом:
Decimalformat df = (decimalformat) numberformat.getinstance ();
Decimalformat df1 = (decimalformat) decimalformat.getinstance ();
Потому что DecimalFormat наследует от NumberFormat.
2 Установите количество десятичных мест
Система по умолчанию в десятичные места составляет 3, например:
Кода -копия выглядит следующим образом:
Decimalformat df = (decimalformat) numberformat.getinstance ();
System.out.println (df.format (12.3456789));
Вывод: 12.346
Теперь вы можете установить десятичное значение на две цифры по следующему методу:
Кода -копия выглядит следующим образом:
df.setmaximumfractiondigits (2);
System.out.println (df.format (12.3456789));
Тогда выход: 12,35
3 Есть два способа преобразования чисел в процентный выход:
(1)
Кода -копия выглядит следующим образом:
df.applypattern ("##. ##%");
System.out.println (df.format (12.3456789));
System.out.println (df.format (1));
System.out.println (df.format (0,015));
Выходы: 1234,57% 100% 1,5%
(2)
Кода -копия выглядит следующим образом:
df.setmaximumfractiondigits (2);
System.out.println (df.format (12.3456789*100)+"%");
System.out.println (df.format (1*100)+"%");
System.out.println (df.format (0,015*100)+"%");
Выходы:
1 234,57% 100% 1,5%
4 Установите размер группы
Кода -копия выглядит следующим образом:
Decimalformat df1 = (decimalformat) decimalformat.getinstance ();
DF1.SetGroupingSize (2);
System.out.println (df1.format (123456789));
Выход: 1,23,45,67,89
Вы также можете отключить настройки группировки DF1.SetGroupingUsed (false);
Кода -копия выглядит следующим образом:
Decimalformat df1 = (decimalformat) decimalformat.getinstance ();
DF1.SetGroupingSize (2);
DF1.SetGroupingUsed (false);
System.out.println (df1.format (123456789));
Вывод: 123456789
5 Установите десятичное значение на 2 цифры
Кода -копия выглядит следующим образом:
Decimalformat df2 = (decimalformat) decimalformat.getinstance ();
df2.applypattern ("0,00");
System.out.println (df2.format (1.2));
Вывод: 1.20
Иногда нам нужно контролировать формат выходных номеров.
Может быть, вы не заботитесь о формате, но вам нужно заботиться о том, что ваша программа является универсальной во всем мире.
System.out.println (1234.56);
В Соединенных Штатах ". Как справиться с этим?
Некоторые пакеты в пакете Java.Text могут решить этот тип проблемы. В следующем простом примере используются эти классы для решения проблемы, поднятой выше:
Кода -копия выглядит следующим образом:
импортировать java.text.numberformat;
импортировать java.util.locale;
открытый класс DecimalFormat1 {
public static void main (String args []) {
// Получить локальный формат по умолчанию
NumberFormat nf1 = numberFormat.getInstance ();
System.out.println (nf1.format (1234.56));
// Получить немецкий формат
NumberFormat nf2 =
Numberformat.getinstance (locale.german);
System.out.println (nf2.format (1234.56));
}}
Если вы находитесь в Соединенных Штатах, после запуска программы, вывод:
1 234,56
1.234,56
Другими словами, используйте разные привычки, чтобы представлять числа в разных местах.
Метод numberFormat.getInstance () возвращает экземпляр NumberFormat (фактически конкретный подкласс NumberFormat, такой как DecimalFormat), который подходит для форматирования числа на основе локальных настроек. Вы также можете использовать региональные настройки без деко, такие как Германия. Затем метод форматирования форматирует цифры в соответствии с конкретными региональными правилами. Эта программа также может быть использована в простой форме:
NumberFormat.getInstance (). Формат (1234,56)
Но сохранение формата, а затем повторное использование его более эффективно. Интернационализация является большой проблемой при форматировании чисел.
Другой является эффективным контролем над форматом, таким как указание количества цифр в дробной части.
Кода -копия выглядит следующим образом:
импортировать java.text.decimalformat;
импортировать java.util.locale;
открытый класс DecimalFormat2 {
public static void main (String args []) {
// Получить локальный формат по умолчанию
Decimalformat df1 = new DecimalFormat ("###. 000");
System.out.println (df1.format (1234.56));
// Получить немецкий формат
Locale.setdefault (locale.german);
Decimalformat df2 = new decimalformat ("###. 000");
System.out.println (df2.format (1234.56));
}
}
В этом примере установлен формат числа, используя такие символы, как "####. 000". Этот режим означает, что до десятичной точки есть четыре числа. Вывод программы:
1234.560
1234 560
Точно так же, например, форматы в экспоненциальной форме, например:
Кода -копия выглядит следующим образом:
импортировать java.text.decimalformat;
открытый класс DecimalFormat3 {
public static void main (String args []) {
Decimalformat df = new DecimalFormat ("0,000E0000");
System.out.println (df.format (1234.56));
}
}
Выход:
1.235E0003
За проценты:
Кода -копия выглядит следующим образом:
импортировать java.text.numberformat;
открытый класс DecimalFormat4 {
public static void main (String args []) {
NumberFormat nf = numberFormat.getPerCentInstance ();
System.out.println (nf.format (0,47));
}
}
Выход:
47%
До сих пор вы видели несколько различных методов для форматирования чисел. С другой стороны, как мне прочитать и проанализировать строку, содержащую форматированные числа? Поддержка разрешения включена в NumberFormat. Например:
Кода -копия выглядит следующим образом:
импортировать java.util.locale;
импортировать java.text.numberformat;
импортировать java.text.parseexception;
открытый класс decimalformat5 {
public static void main (String args []) {
// локальный формат
NumberFormat nf1 = numberFormat.getInstance ();
Объект obj1 = null;
// Форматный анализ
пытаться {
obj1 = nf1.parse ("1234,56");
}
поймать (parseexception e1) {
System.err.println (E1);
}
System.out.println (obj1);
// немецкий формат
NumberFormat nf2 =
Numberformat.getinstance (locale.german);
Объект obj2 = null;
// Форматный анализ
пытаться {
obj2 = nf2.parse ("1234,56");
}
поймать (parseexception e2) {
System.err.println (E2);
}
System.out.println (obj2);
}
}
Этот пример разделен на две части, обе из которых разрабатывают строку: "1234,56". Первая часть использует локальный формат для анализа, в то время как вторая часть использует немецкий формат для анализа. Когда программа работает в Соединенных Штатах, результат:
123456
1234,56
Другими словами, «1234,56» считается огромным целым числом 123456 года в Соединенных Штатах, а в Германии в Германии - десятичным знаком.
Существует также последний вопрос о форматировании обсуждения. В приведенном выше примере используются как DecimalFormat, так и NumberFormat. DecimalFormat часто используется для получения хорошего управления форматом, в то время как NumberFormat часто используется для указания различных областей, чем локальные. Как объединить две категории?
Ответ вращается вокруг того факта, что DecimalFormat является подклассом NumberFormat, экземпляр которого указан как конкретная область. Следовательно, вы можете указать область, используя numberformat.getinstance, а затем поставить структуру на объект DecimalFormat. В документации упоминается, что этот метод может быть применен в большинстве случаев, но вам необходимо использовать блок Try/Catch для окружения актера в случае, если преобразование не работает должным образом (предположительно, используя странную область в очень ненавязчивых ситуациях). Вот пример подобного:
Кода -копия выглядит следующим образом:
импортировать java.text.decimalformat;
импортировать java.text.numberformat;
импортировать java.util.locale;
открытый класс DecimalFormat6 {
public static void main (String args []) {
Decimalformat df = null;
// Получить объект NumberFormat и
// бросить в объект DecimalFormat
пытаться {
df = (decimalformat)
Numberformat.getinstance (locale.german);
}
catch (classcastException e) {
System.err.println (e);
}
// Установить режим формата
df.applypattern ("####. 00000");
// Оформление числа
System.out.println (df.format (1234.56));
}
}
Метод getInstance () получает формат, а затем вызывает метод ApplyPattern () для установки режима формата и выходов:
1234 56000
Если вы не заботитесь о интернационализации, вы можете напрямую использовать DecimalFormat.