在项目开发中遇到涉及金额的地方免不了对数值进行格式化,例如:人民币 ¥####,####.##,美元$ ###,###,###.00 等。但是往往服务器返回的值都是int类型,如果直接展示在UI层上,就没有对应的格式了。
这里可以用到一个类:DecimalFormat
简单的使用方法是:
//format可以使用double,long作为参数
new DecimalFormat("###,##0.00").format(Double.parseDouble(String.valueOf(value)));
通过这段代码 输出的格式为带规范的String类型
例如 如果value的值是1000,那么通过上述代码得到的返回值为 “1,000.00” 。
这就是DecimalFormat的方便之处。
然而在开发中却遇到了这样的问题,产品要在多国家上线,开发过程中一切顺利。
但是到了测试中发现,如果将语言改成其他国家,例如西班牙,葡萄牙等。转换的格式就变了,逗号和句号便相互替换:
这才恍然大悟,原来DecimalFormat 的返回值是会根据语言区域化变化而变化的。
现在的问题就是要如何修改,不啰嗦,上代码:
DecimalFormat df = new DecimalFormat("###,##0.00");
DecimalFormatSymbols symbols = new DecimalFormatSymbols(Locale.US);
df.setDecimalFormatSymbols(symbols);
df.format(Double.parseDouble(String.valueOf(value)));
可以看到这段代码中增加了一个 “DecimalFormatSymbols”类,而这个类可以通过设置Locale来固定死转化的区域格式,如此便可以不管在何种语言环境都能将格式固定住。
结束!