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(",",".");