Decimal separator in NumberFormat

后端 未结 3 1774
萌比男神i
萌比男神i 2020-11-30 09:52

Given a locale java.text.NumberFormat:

NumberFormat numberFormat = NumberFormat.getInstance();

How can I get the character used as Decimal

3条回答
  •  时光取名叫无心
    2020-11-30 10:06

    I agree with biziclop and Joachim Sauer that messing with decimal and grouping separators and doing this work manually, can cause a lot of problems. Use of the locale parameter in the NumberFormat getInstance method does all the work for you automatically. And you can easily disable the thousand grouping separator, if you wish so.

    The following junit test method (which passes) shows this behavior based on English and German locale.

    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
    }
    

提交回复
热议问题