web-dev-qa-db-fra.com

Forcer le point (".") En tant que séparateur décimal dans java

J'utilise actuellement le code suivant pour imprimer un double:

return String.format("%.2f", someDouble);

Cela fonctionne bien, sauf que Java utilise le séparateur décimal de mes paramètres régionaux (une virgule) pendant que je souhaite utiliser un point. Existe-t-il un moyen simple de procéder?

91
dtech

Utilisez la surcharge de String.format qui vous permet de spécifier les paramètres régionaux:

return String.format(Locale.ROOT, "%.2f", someDouble);

Si vous seulement formatez un nombre - comme vous êtes ici -, alors utiliser NumberFormat serait probablement plus approprié. Mais si vous avez besoin du reste des capacités de formatage de String.format, cela devrait bien fonctionner.

153
Jon Skeet

Une solution plus radicale consiste à définir vos paramètres régionaux tôt dans main ().

Comme:

Locale.setDefault(new Locale("en", "US"));
18
Federico Giorgi

Vous pouvez transmettre des paramètres régionaux supplémentaires à Java.lang.String.format ainsi qu'à Java.io.PrintStream.printf (par exemple, System.out.printf ()):

import Java.util.Locale;

public class PrintfLocales {

    public static void main(String args[]) {
        System.out.printf("%.2f: Default locale\n", 3.1415926535);
        System.out.printf(Locale.GERMANY, "%.2f: Germany locale\n", 3.1415926535);
        System.out.printf(Locale.US, "%.2f: US locale\n", 3.1415926535);
    }

}

Cela se traduit par ce qui suit (sur mon PC):

$ Java PrintfLocales
3.14: Default locale
3,14: Germany locale
3.14: US locale

Voir String.format dans l’API Java.

10
Simon A. Eugster

Bien trop tard, mais comme l’autre mentionné ici est un exemple d’utilisation de NumberFormat (et de sa sous-classe DecimalFormat)

public static String format(double num) {
    DecimalFormatSymbols decimalSymbols = DecimalFormatSymbols.getInstance();
    decimalSymbols.setDecimalSeparator('.');
    return new DecimalFormat("0.00", decimalSymbols).format(num);
 }
8
VizGhar

Vous pouvez utiliser NumberFormat et DecimalFormat.

Jetez un coup d’œil à ce lien à partir de Java Tutorials Formatage LocaleSpecific)

La section intitulée Formatage sensible à la localisation est ce dont vous avez besoin.

0
blong824