String.format()小数点变成逗号

在Android中使用String.format进行数字格式化时,Locale.getDefault可能造成小数点在某些语言环境下变为逗号。例如德语、西班牙语和意大利语。为避免此问题,可以指定Locale.ENGLISH来确保小数点始终使用英文格式。
String.format("%%.%df", dot);就相当于String.format(Locale.getDefault(),"%%.%df", dot);

其中Locale.getDefault()标识本地的语言环境,但是有些语言Android中是没有的,比如德语、西班牙语、意大利语等。如果设置了这些语言,再转换数字的时候,小数点就会变成逗号。

解决办法:

String.format(Locale.ENGLISH,"%%.%df", dot);

另外,DecimalFormat的format()方法也会出现上面的问题。也是因为DecimalFormat构造函数里面使用的是Locale.getDefault(),比如直接按照下面的写法,使用西班牙语等Android系统没有的余元的时候,输出df2Str为10,24。

DecimalFormat df2 =new DecimalFormat("#0.00");
String df2Str = df2.format(10.24f);

直接设置一下Locale就可以了,如下:

Locale.setDefault(Locale.ENGLISH);
DecimalFormat df2 =new DecimalFormat("#0.00"); 
String df2Str = df2.format(10.24f);

这样df2Str就是10.24了。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值