如何在Java中使用印度风格(lahk,crore)千位分隔符?

时间:2016-08-29 12:03:03

标签: java

输入值

double value = 668260.10;

输出应为:6,68,260.10

我尝试了下面的内容,但它正在执行668,260.10

NumberFormat nf = NumberFormat.getNumberInstance(loc);
DecimalFormat df = (DecimalFormat)nf;
df.applyPattern("#,##,###.00");
String output = df.format(value);
System.out.println(output);

(注意:分隔符样式如this Wikipedia article中所述。)

2 个答案:

答案 0 :(得分:0)

NumberFormat不支持这种格式化。

答案 1 :(得分:0)

您需要定义自定义格式,如下所示

 public class Test {


        public static void main(String[] args) {

            DecimalFormat formatter = new DecimalFormat("#,##,##0.00");


            System.out.println(formatLakh(668260.10));
        }

        private static String formatLakh(double d) {
            String s = String.format(Locale.UK, "%1.2f", Math.abs(d));
            s = s.replaceAll("(.+)(...\\...)", "$1,$2");
            while (s.matches("\\d{3,},.+")) {
                s = s.replaceAll("(\\d+)(\\d{2},.+)", "$1,$2");
            }
            return d < 0 ? ("-" + s) : s;
        }
    }