2010-06-19 18 views
24

En Java, ¿cómo puedo convertir de manera eficiente flota como 1234.56 y BigDecimals similares en cadenas como $1,234.56USD formato de moneda en Java

Estoy buscando la siguiente:

cadena 12345.67 se convierte en cadena $12,345.67

También estoy buscando hacerlo con Float y BigDecimal también.

Respuesta

8
DecimalFormat moneyFormat = new DecimalFormat("$0.00"); 
System.out.println(moneyFormat.format(1234.56)); 
+0

¡Excelente! Me gusta esta solución – Erick

30

Hay un lenguaje sensible a la localidad que funciona bien:

import java.text.NumberFormat; 

// Get a currency formatter for the current locale. 
NumberFormat fmt = NumberFormat.getCurrencyInstance(); 
System.out.println(fmt.format(120.00)); 

Si su localización actual se encuentra en los EE.UU., el println imprimirá $ 120,00

Otro ejemplo:

import java.text.NumberFormat; 
import java.util.Locale; 

Locale locale = new Locale("en", "UK"); 
NumberFormat fmt = NumberFormat.getCurrencyInstance(locale); 
System.out.println(fmt.format(120.00)); 

Esto imprimirá: £ 120.00

0

Aquí está el código de acuerdo con su entrada y salida ::

La salida del programa es de $ 12,345.67 tanto para BigDecimal como para el número y también funciona para flotación.

import java.math.BigDecimal; 
import java.text.DecimalFormat; 
import java.text.DecimalFormatSymbols; 

public class test { 
    public static void main(String[] args) { 
     DecimalFormatSymbols symbols = new DecimalFormatSymbols(); 
     symbols.setGroupingSeparator(','); 
     String pattern = "$#,##0.###"; 
     DecimalFormat decimalFormat = new DecimalFormat(pattern, symbols); 
     BigDecimal bigDecimal = new BigDecimal("12345.67"); 

     String bigDecimalConvertedValue = decimalFormat.format(bigDecimal); 
     String convertedValue = decimalFormat.format(12345.67); 

     System.out.println(bigDecimalConvertedValue); 
     System.out.println(convertedValue); 
    } 
} 
Cuestiones relacionadas