格式化编号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
答案 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.您需要编写自己的格式化程序。