web-dev-qa-db-fra.com

Formatage des devises USD en Java

En Java, comment convertir efficacement des flottants comme 1234.56 et des BigDecimals similaires en chaînes comme $1,234.56

Je cherche ce qui suit:

La chaîne 12345.67 devient la chaîne $12,345.67

Je cherche aussi à faire cela avec Float et BigDecimal également.

24
Tidbtis

Il y a un idiome sensible à la localisation qui fonctionne 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 vos paramètres régionaux sont aux États-Unis, la println imprimera $ 120

Un autre exemple:

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));

Cela va imprimer: £ 120.00

31
Brian Clapper
DecimalFormat moneyFormat = new DecimalFormat("$0.00");
System.out.println(moneyFormat.format(1234.56));
8
krock

Voici le code en fonction de vos entrées et sorties:

Le résultat du programme est de 12 345,67 USD pour BigDecimal et nombre et fonctionne également pour float.

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);
    }
}
0
ABHISHEK HONEY