0

I am trying to use DecimalFormat.groupingSize() functionality with NumberFormat class, as I need to have grouping size based on Country like 1,2345,6789 for China, 1,234,567 for Canada or 1,23,450 for India. I've tried looking for solutions but the solutions are based on DecimalForamt. Is there any way we can use NumberFormat to resolve this challenge?

Majid Roustaei
  • 1,556
  • 1
  • 20
  • 39
  • I don't think it is possible. Have a look at: https://stackoverflow.com/questions/5379231/displaying-currency-in-indian-numbering-format and also: https://stackoverflow.com/questions/34852803/format-currency-in-indian-numbering-format-without-symbol-in-java – Abra Sep 21 '20 at 18:49

1 Answers1

0

DecimalFormat does not allow variable grouping size.

For variable grouping size, use Icu4J's DecimalFormat

    com.ibm.icu.text.DecimalFormatSymbols dfs = new com.ibm.icu.text.DecimalFormatSymbols();
    dfs.setGroupingSeparator(' ');
    com.ibm.icu.text.DecimalFormat df = new com.ibm.icu.text.DecimalFormat("0,00,000", dfs); // indian numbering system
    String s1 = df.format(500000); // 5,00,000
    String s2 = df.format(121212123); // 12,12,12,123
    String s3 = df.format(new com.ibm.icu.math.BigDecimal("67890000000000")); // 6,78,90,00,00,00,000