Étant donné une locale Java.text.NumberFormat:
NumberFormat numberFormat = NumberFormat.getInstance();
Comment puis-je obtenir le caractère utilisé comme séparateur décimal (si c'est une virgule ou un point) dans ce format numérique? Comment puis-je modifier cette propriété sans avoir à utiliser le nouveau DecimalFormat (format)?
Merci
La classe d'assistance DecimalFomatSymbols est ce que vous recherchez:
DecimalFormat format=DecimalFormat.getInstance();
DecimalFormatSymbols symbols=format.getDecimalFormatSymbols();
char sep=symbols.getDecimalSeparator();
Pour définir des symboles selon vos besoins:
//create a new instance
DecimalFormatSymbols custom=new DecimalFormatSymbols();
custom.setDecimalSeparator(',');
format.setDecimalFormatSymbols(custom);
EDIT: cette réponse n'est valable que pour DecimalFormat
, et non pour NumberFormat
comme requis dans la question. Quoi qu'il en soit, comme cela peut aider l'auteur, je vais le laisser ici.
Je suis d'accord avec biziclop et Joachim Sauer que jouer avec des séparateurs décimaux et grouper et faire ce travail manuellement, peut causer beaucoup de problèmes. L'utilisation du paramètre locale dans la méthode NumberFormat
getInstance fait tout le travail automatiquement pour vous. Et vous pouvez facilement désactiver le séparateur de milliers de regroupements, si vous le souhaitez.
La méthode de test junit suivante (qui réussit) montre ce comportement basé sur les paramètres régionaux anglais et allemand.
public void testFormatter() {
DecimalFormat formatter = (DecimalFormat) DecimalFormat.getInstance(Locale.UK);
assertEquals('.', formatter.getDecimalFormatSymbols().getDecimalSeparator()); //true
formatter = (DecimalFormat) DecimalFormat.getInstance(Locale.GERMAN);
assertEquals(',', formatter.getDecimalFormatSymbols().getDecimalSeparator()); //true
//and in case you want another decimal seperator for a specific locale
DecimalFormatSymbols decimalFormatSymbols = new DecimalFormatSymbols();
decimalFormatSymbols.setDecimalSeparator('.');
formatter.setDecimalFormatSymbols(decimalFormatSymbols);
assertEquals('.', formatter.getDecimalFormatSymbols().getDecimalSeparator()); //true
}
Si votre instance NumberFormat
est une DecimalFormat
, alors vous pouvez utiliser getDecimalFormatSymbols()
pour accéder à ces informations.
En général, vous ne pouvez pas accéder à ces informations.
Pourquoi en avez-vous besoin?