Force point (“.”) Comme séparateur décimal en Java

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

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

Cela fonctionne bien, sauf que Java utilise le séparateur décimal de ma Locale (une virgule) alors que je voudrais utiliser un point. Y a-t-il un moyen facile de faire ceci?

Utilisez la surcharge de Ssortingng.format qui vous permet de spécifier les parameters régionaux:

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

Si vous ne formatez qu’un nombre – comme vous le faites ici – alors l’utilisation de NumberFormat serait probablement plus appropriée. Mais si vous avez besoin du rest des capacités de formatage de Ssortingng.format , cela devrait fonctionner Ssortingng.format .

Une solution plus radicale consiste à définir votre Locale tôt dans la main ().

Comme:

 Locale.setDefault(new Locale("en", "US")); 

Vous pouvez transmettre un paramètre Locale supplémentaire à java.lang.Ssortingng.format ainsi qu’à java.io.PrintStream.printf (par exemple System.out.printf ()):

 import java.util.Locale; public class PrintfLocales { public static void main(Ssortingng 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 Ssortingng.format dans l’API Java.

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

 public static Ssortingng 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 oeil à ce lien à partir de Java Tutorials LocaleSpecific Formatting

La section intitulée Formatage sensible aux parameters régionaux est ce dont vous avez besoin.

J’ai eu le même problème .. 55.1 transformé en 55,10 . Mon correctif rapide (sale?) Est:

Ssortingng.format("%.2f", value).replaceAll(",",".");