在java中使用数字格式来使用Lakh格式而不是百万格式 [英] Number formatting in java to use Lakh format instead of million format

查看:114
本文介绍了在java中使用数字格式来使用Lakh格式而不是百万格式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试过使用 NumberFormat DecimalFormat 。即使我正在使用 en-In 语言环境,这些数字将以西方格式进行格式化。是否有任何选项格式化一个数字,而不是格式?



例如 - 我想 NumberFormatInstance.format(123456)> 1,23,456.00 而不是 123,456.00 (例如,使用 this Wikipedia page )。 解决方案

因为用标准的Java格式化程序是不可能的,所以我可以提供一个自定义的格式化程序。

  public static void main(String []] args)抛出Exception {
System.out.println(formatLakh(123456.00));


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;

$ / code>

输出

  1,23,456.00 


I have tried using NumberFormat and DecimalFormat. Even though I am using the en-In locale, the numbers are being formatted in Western formats. Is there any option to format a number in lakhs format instead?

Ex - I want NumberFormatInstance.format(123456) to give 1,23,456.00 instead of 123,456.00 (e.g., using the system described on this Wikipedia page).

解决方案

Since it is impossible with standard the Java formatters, I can offer a custom formatter

public static void main(String[] args) throws Exception {
    System.out.println(formatLakh(123456.00));
}

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;
}

output

1,23,456.00

这篇关于在java中使用数字格式来使用Lakh格式而不是百万格式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆