在java中使用数字格式来使用Lakh格式而不是百万格式 [英] Number formatting in java to use Lakh format instead of million format
问题描述
我尝试过使用 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屋!