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了。
在Android中使用String.format进行数字格式化时,Locale.getDefault可能造成小数点在某些语言环境下变为逗号。例如德语、西班牙语和意大利语。为避免此问题,可以指定Locale.ENGLISH来确保小数点始终使用英文格式。
8648

被折叠的 条评论
为什么被折叠?



