breve
El patrón de decimalformat contiene subtoteros positivos y negativos, como "#, ## 0.00; (#, ## 0.00)":
/*** Creado por Shuai el 2016/7/11. */public class Main {public static void main (string [] args) {// valor positivo bigDecimal bigDecimal = bigDecimal.valueOf (-12211151515151.541666); // valor negativo BigDecimal bigDecimal2 = bigDecimal.ValueOf (122111515151515151.541666); Patrón de cadena = "#, ## 0.00; (#, ## 0.00)"; DecimalFormat decimalFormat = new DecimalFormat (Patrón); decimalformat.format (bigDecimal); System.out.println (decimalFormat.format (bigDecimal)); System.out.print (decimalformat.format (bigDecimal2)); }}Producción:
(12,211,151,515,151.54) 12,211,151,515,151.54
Cada subcatrán consiste en un prefijo, una parte numérica y un sufijo. Por ejemplo, el patrón positivo y negativo anterior solo puede tener diferentes prefijos y sufijos. La parte numérica toma un patrón positivo por defecto, lo que significa que "#, ## 0.0#; (#)" es equivalente a "#, ## 0.0#; (#, ## 0.0#)" . ; El patrón negativo posterior es opcional, y no puede ser ninguno, si no, el valor negativo se mostrará en el formulario predeterminado (el prefijo es " -" en la mayoría de las regiones), como -12,211,151,515,151.54 . Curiosamente, para 0 valores, se tomará el patrón positivo:
public class Main {public static void main (string [] args) {bigDecimal bigDecimal = bigDecimal.ValueOf (-0.00); BigDecimal bigDecimal2 = bigDecimal.ValueOf (0.00); Patrón de cadena = "0.00; (0.00)"; DecimalFormat decimalFormat = new DecimalFormat (Patrón); decimalformat.format (bigDecimal); System.out.println (decimalFormat.format (bigDecimal)); System.out.print (decimalformat.format (bigDecimal2)); }}Producción:
0.000.00
Decimalformat puede analizar las cadenas directamente:
System.out.print (decimalFormat.parse (",,, 1,515,115.26262", nueva parseposición (0)));Producción:
1515115.26262
Como puede ver, el método DecimalFormat.Parse se elimina automáticamente . Anteriormente , debe tenerse en cuenta aquí que el primer carácter de la cadena analizada debe ser un número, o seguido de un número, de lo contrario, se lanzará o se analizará como nula . El segundo parámetro de PARSE especifica la posición del primer carácter que se analizará. Las posiciones de ejemplo anteriores 0, 1, 2, 3 se analizan de 1 y 4, 5 se analizan desde 5, es decir, si se toma , el bit se llena por el número al lado. Si hay otros caracteres, excepto y los números aparecen antes del analizador , analizar el análisis del parse al dígito anterior de este personaje, o si hay otros caracteres, excepto los números, aparecen después de Pares (incluyendo ), entonces el análisis de análisis de análisis de análisis al dígito anterior de este personaje.
Si el patrón contiene múltiples grupos de caracteres con diferentes números, por ejemplo: "#, ##, ###, ####", entonces usa el grupo a continuación, es decir, "#, ##, ###, ####" == "####, ####" == "####, #### 3" == "#####, ###":: ":": "
clase pública Main {public static void main (string [] args) {bigDecimal bigDecimal = bigDecimal.ValueOf (65652323265.626262); Patrón de cadena = "#, ##, ##, ###, ### 0.00"; String Pattern2 = "#####, ### 0.00"; String Pattern3 = "##, ####, ### 0.00"; DecimalFormat decimalFormat = new DecimalFormat (Patrón); System.out.println (decimalFormat.format (bigDecimal)); decimalformat.applypattern (patrón2); System.out.println (decimalFormat.format (bigDecimal)); decimalformat.applypattern (patrón3); System.out.println (decimalFormat.format (bigDecimal)); }}Producción:
656,5232,3265.63656,5232,3265.63656,5232,3265.63
Personajes de patrones especiales
Método de conteo científico
1234 se puede representar como 1.234 x 10^3, y el patrón es "0. ### e0", que formateará 1234 a 1.234E3.
Número de enteros:
El número de números significativos se deriva de la suma del número mínimo de dígitos enteros y el número máximo de dígitos decimales. Por ejemplo, "## 0. ## e0" El número mínimo de dígitos enteros es 1 y el número máximo de dígitos decimales es 2, entonces el número válido es 3, y el 12345 formateado es "12.3e3". Excepto por el número válido, se omiten otros elementos.
Reglas de redondeo numérico
RoundingMode se puede establecer a través del método decimalFormat.setRoundingMode. El valor predeterminado es RoundingMode.half_even.
Está fuera de sincronización. Si se accede por múltiples hilos, debe implementar la sincronización por usted mismo
Se recomienda crear una instancia de formato separada para cada hilo. Si múltiples hilos acceden a un formato al mismo tiempo, debe sincronizarse externamente.
Ejemplo
// Imprima un número utilizando el número localizado, entero, moneda, // y porcentaje de formato para cada localización localidad [] locales = numberFormat.getAvailableLocales (); doble mynumber = -1234.56; Formulario numberFormat; for (int j = 0; j <4; ++ j) {System.out.println ("format"); for (int i = 0; i <locales.length; ++ i) {if (locales [i] .getCountry (). longitud () == 0) {continuar; // omitir locales solo en lenguaje} system.out.print (locales [i] .getDisplayName ()); switch (j) {case 0: form = numberFormat.getInStance (Locales [i]); romper; Caso 1: form = numberFormat.getInTegerInStance (Locales [i]); romper; caso 2: form = numberFormat.getCurrencyInstance (locales [i]); romper; predeterminado: form = numberFormat.getPermentinStance (Locales [i]); romper; } if (formulario de decimalFormat) {system.out.print (":" + ((decimalFormat) formy) .topattern ()); } System.out.print (" ->" + form.format (mynumber)); intente {System.out.println (" ->" + form.parse (form.format (mynumber))); } catch (parseException e) {}}}Referencia: dirección original
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.