Метод numberFormat.getInstance () возвращает экземпляр NumberFormat (фактически конкретный подкласс NumberFormat, такой как DecimalFormat), который подходит для форматирования числа на основе локальных настроек. Вы также можете использовать региональные настройки без деко, такие как Германия. Затем метод форматирования форматирует цифры в соответствии с конкретными региональными правилами. Эта программа также может быть использована в простой форме:
NumberFormat.getInstance (). Формат (1234,56)
Но сохранение формата, а затем повторное использование его более эффективно. Интернационализация является большой проблемой при форматировании чисел.
Другим является эффективный контроль над форматом, таким как указание количества цифр в дробной части. Вот простой пример решения этой проблемы:
import java.text.decimalformat; import java.util.locale; public class 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". Этот режим означает, что до десятичной точки есть четыре числа. Если этого недостаточно, это будет пусто. Если есть три числа после десятичной точки, оно будет заполнено 0. Вывод программы:
1234.560
1234 560
Точно так же, например, форматы в экспоненциальной форме, например:
импортировать java.text.decimalformat; public class 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; public class decimalformat4 {public static void main (string args []) {numberFormat nf = numberFormat.getPercentInstance (); System.out.println (nf.format (0.47);}} Выход:
47%
До сих пор вы видели несколько различных методов для форматирования чисел. С другой стороны, как мне прочитать и проанализировать строку, содержащую форматированные числа? Поддержка разрешения включена в NumberFormat. Например:
import java.util.locale; import java.text.numberformat; импорт java.text.parseexception; public class decimalformat5 {public static void main (string args []) {// local format NumberFormat nf1 = numberFormat.getInstance (); Объект obj1 = null; // Основанный на формате parsing try {obj1 = nf1.parse ("1234,56"); } catch (parseException e1) {System.err.println (e1); } System.out.println (obj1); // Немецкий формат NumberFormat nf2 = numberFormat.getInstance (locale.german); Объект obj2 = null; // Основанный на формате } catch (parseException e2) {System.err.println (e2); } System.out.println (obj2); }} Этот пример разделен на две части, обе из которых разрабатывают строку: "1234,56". Первая часть использует локальный формат для анализа, в то время как вторая часть использует немецкий формат для анализа. Когда программа работает в Соединенных Штатах, результат:
123456
1234,56
Другими словами, «1234,56» считается огромным целым числом в Соединенных Штатах «123456» и десятичным в Германии »1234.56».
DecimalFormatmat и NumberFormat Connection
В приведенном выше примере используются как DecimalFormat, так и NumberFormat. DecimalFormat часто используется для получения хорошего управления форматом, в то время как NumberFormat часто используется для указания различных областей, чем локальные. Как объединить две категории?
Ответ вращается вокруг того факта, что DecimalFormat является подклассом NumberFormat, экземпляр которого указан как конкретная область. Следовательно, вы можете указать область, используя numberformat.getinstance, а затем поставить структуру на объект DecimalFormat. В документации упоминается, что этот метод может быть применен в большинстве случаев, но вам необходимо использовать блок Try/Catch для окружения актера в случае, если преобразование не работает должным образом (предположительно, используя странную область в очень ненавязчивых ситуациях). Вот пример подобного:
import java.text.decimalformat; import java.text.numberformat; импорт java.util.locale; public class decimalformat6 {public static void main (string args []) {decimalformat df = null; // Получить объект numberFormat и // поднять в объект DecimalFormat try {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.
Если v - необработанный двойной, масштаб является необходимой точностью и возвращает двойную, которая требует десятичной цифры.
public Static Double Round (Double V, int Scale) {if (Scale <0) {бросить новое allodalargumentException («Шкала должна быть положительным целым числом или нулевым»); } BigDecimal B = новый BigDecimal (Double.ToString (v)); BigDecimal One = новый BigDecimal ("1"); возврат b.divide (один, Scale, bigdecimal.round_half_up) .doublevalue (); } Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.