El método NumberFormat.getInstance () devuelve una instancia de NumberFormat (en realidad una subclase específica de NumberFormat, como DecimalFormat), que es adecuada para formatear un número basado en la configuración local. También puede usar entornos regionales no defensores, como Alemania. El método de formato luego formatea los números de acuerdo con reglas regionales específicas. Este programa también se puede usar en una forma simple:
NumberFormat.getInstance (). Formato (1234.56)
Pero guardar un formato y luego reutilizarlo es más eficiente. La internacionalización es un gran problema al formatear números.
Otro es el control efectivo sobre el formato, como especificar el número de dígitos en la parte fraccional. Aquí hay un ejemplo simple para resolver este problema:
import java.text.DecimalFormat; import java.util.locale; clase pública decimalFormat2 {public static void main (String args []) {// Obtenga el formato predeterminado local decimalFormat df1 = new DecimalFormat ("####. 000"); System.out.println (df1.format (1234.56)); // Obtener el formato alemán local.setDefault (locale.german); DecimalFormat df2 = new DecimalFormat ("####. 000"); System.out.println (DF2.Format (1234.56));}} En este ejemplo, se establece el formato de número, utilizando símbolos como "####. 000". Este modo significa que hay cuatro números antes del punto decimal. Si no es suficiente, estará vacío. Si hay tres números después del punto decimal, se llenará con 0. Salida del programa:
1234.560
1234,560
Del mismo modo, los formatos en forma exponencial también se pueden controlar, por ejemplo:
import java.text.DecimalFormat; clase pública decimalFormat3 {public static void main (string args []) {decimalFormat df = new DecimalFormat ("0.000e0000"); System.out.println (df.format (1234.56));}} Producción:
1.235e0003
Para porcentajes:
import java.text.numberFormat; public class DecimalFormat4 {public static void main (String args []) {numberFormat nf = numberFormat.getpercentInstance (); system.out.println (nf.format (0.47));}} Producción:
47%
Hasta ahora, has visto varias técnicas diferentes para formatear números. Por otro lado, ¿cómo leo y analizo una cadena que contiene números formateados? El soporte de resolución se incluye en NumberFormat. Por ejemplo:
import java.util.locale; import java.text.numberFormat; import java.text.parseException; public class DecimalFormat5 {public static void main (string args []) {// formato local numberFormat nf1 = numberFormat.getInstance (); Objeco obj1 = nulo; // análisis de análisis basado en formato {obj1 = nf1.parse ("1234,56"); } catch (ParseException e1) {System.err.println (e1); } System.out.println (obj1); // formato alemán numberFormat nf2 = numberFormat.getInstance (locale.german); Objero obj2 = nulo; // análisis de análisis basado en formato {obj2 = nf2.parse ("1234,56"); } catch (ParseException e2) {System.err.println (e2); } System.out.println (obj2); }} Este ejemplo se divide en dos partes, que analizan una cadena: "1234,56". La primera parte usa el formato local para analizar, mientras que la segunda parte usa el formato alemán para analizar. Cuando el programa se ejecuta en los Estados Unidos, el resultado es:
123456
1234.56
En otras palabras, "1234,56" se considera un enorme entero en los Estados Unidos "123456" y un decimal en Alemania "1234.56".
DecimalFormat y numberFormat Connection
En el ejemplo anterior, se utilizan decimalformat y numberFormat. Decimalformat a menudo se usa para obtener un buen control de formato, mientras que NumberFormat a menudo se usa para especificar diferentes regiones que locales. ¿Cómo combinar dos categorías?
La respuesta gira en torno al hecho de que DecimalFormat es una subclase de NumberFormat, cuya instancia se especifica como una región específica. Por lo tanto, puede especificar una región usando NumberFormat.getInstance y luego lanzar la estructura a un objeto decimalformat. La documentación menciona que esta técnica se puede aplicar en la mayoría de los casos, pero debe usar un bloque de try/captura para rodear el elenco en caso de que la conversión no funcione correctamente (presumiblemente usando un área extraña en situaciones muy discretas). Aquí hay un ejemplo como este:
import java.text.DecimalFormat; import java.text.numberFormat; import java.util.locale; clase pública decimalFormat6 {public static void main (string args []) {decimalFormat df = null; // Obtenga un objeto numnformat y // emitir a un objeto decimalFormat try {df = (decimalFormat) numberFormat.getInstance (locale.german); } catch (ClassCastException e) {System.err.println (e); } // establecer el modo de formato df.applypattern ("####. 00000"); // formatear un número System.out.println (df.format (1234.56)); }} El método getInstance () obtiene el formato y luego llama al método ApplyPattern () para establecer el modo de formato, salida:
1234,56000
Si no le importa la internacionalización, puede usar decimalformat directamente.
Donde V es un doble sin procesar, la escala es la precisión requerida y devuelve un doble que requiere un dígito decimal.
Public static double (doble V, int escala) {if (escala <0) {tirar nueva ilegalargumentException ("La escala debe ser un entero o cero positivo"); } BigDecimal b = new BigDecimal (double.ToString (v)); BigDecimal One = new BigDecimal ("1"); return b.divide (uno, escala, bigDecimal.round_half_up) .DoubleValue (); } 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.