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?
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.
Une solution plus radicale consiste à définir vos paramètres régionaux tôt dans main ().
Comme:
Locale.setDefault(new Locale("en", "US"));
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.
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);
}
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.