Java编号格式

时间:2015-06-22 09:06:51

标签: java

格式化编号234156.123,带有模式#,##,###。###使用下面的代码格式化为234,156.123,但它应格式化为 2,34,156.123

小数位数按照模式,而小数点前的数字不按预期格式化。

编写的代码如下

String pattern = "#,##,###.###";
double number = 234156.123;
DecimalFormat decimalFormat = new DecimalFormat(pattern);
String format = decimalFormat.format(number);
System.out.println(format);

结果:

  

234,156.123


预期成果:

  

2,34,156.123

2 个答案:

答案 0 :(得分:1)

来自Alex的评论docs.oracle.com/javase/7/docs/api/java/text/DecimalFormat.html

  

分组分隔符通常用于数千个,但在某些国家/地区,它可以分离数万个。分组大小是分组字符之间的固定位数,例如3表示100,000,000或4表示1,0000,0000。如果提供具有多个分组字符的模式,则最后一个和整数结尾之间的间隔是使用的间隔。所以"#,##,###,####" ==" ######,####" ==" ##,####,####"。

要以这种方式格式化,您需要编写自定义格式化程序。

答案 1 :(得分:0)

不幸的是,DecimalFormat没有做你想做的事。

来自Javadoc

  

分组大小是一个常数   分组字符之间的位数,例如3表示   10,000,000或4为1,0000,0000。如果您提供模式   多个分组字符,最后一个和之间的间隔   整数的结尾是使用的那个。所以"#,##,###,####" ==   " ######,####" ==" ##,####,####"。

您所需的行为具有非常量的组大小 - 3前面有2,前面是1.您需要编写自己的格式化程序。