Séparateur décimal dans NumberFormat
Étant donné une locale java.texte.NumberFormat:
NumberFormat numberFormat = NumberFormat.getInstance();
Comment puis-je obtenir le caractère utilisé comme séparateur décimal (s'il s'agit d'une virgule ou d'un point) dans ce numberformat? Comment puis-je modifier cette propriété sans avoir à utiliser New DecimalFormat (format)?
Merci
3 réponses
La classe d'AIDE DecimalFomatSymbols est ce que vous recherchez:
DecimalFormat format=DecimalFormat.getInstance();
DecimalFormatSymbols symbols=format.getDecimalFormatSymbols();
char sep=symbols.getDecimalSeparator();
Pour définir les symboles nécessaires:
//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 de regroupement 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 pour vous automatiquement. Et vous pouvez facilement désactiver le séparateur de milliers de groupes, si vous le souhaitez.
La méthode de test junit suivante (qui passe) 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
}
If votre NumberFormat
exemple, est un DecimalFormat
, ensuite, vous pouvez utiliser getDecimalFormatSymbols()
pour obtenir cette information.
En général, vous ne pouvez pas accéder à cette information.
Pourquoi en avez-vous besoin?