我在运行 5.0 的 Android 设备上查看我的应用程序时发现了一个奇怪的错误。
在 5.0 之前的设备上,我的应用程序会在必要时将逗号添加到数字中。例如“1,234”或“100,000”
在 5.0 设备上,相同的代码将这些数字显示为“1234”或“100000”。有没有其他人注意到这一点?
我已经包含了我的代码来格式化下面的数字 - 我不确定 Lollipop 设备需要更改什么才能显示正确的格式。
public static String formatNumber(Integer number, String prefix) {
if (prefix == null) {
prefix = Constants.PREFIX_SYMBOL;
}
StringBuilder stringBuilder = new StringBuilder(prefix);
NumberFormat numberFormatter = NumberFormat.getIntegerInstance(new Locale("en_UK"));
stringBuilder.append("").append(numberFormatter.format(number));
return stringBuilder.toString();
}
最佳答案
所以我认为解决方法如下
public static String formatNumber(Integer number, String prefix) {
if (prefix == null) {
prefix = Constants.PREFIX_SYMBOL;
}
StringBuilder stringBuilder = new StringBuilder(prefix);
NumberFormat numberFormatter = NumberFormat.getIntegerInstance();
stringBuilder.append("").append(numberFormatter.format(number));
return stringBuilder.toString();
}
从 NumberFormat.getIntegerInstance();
调用中删除区域设置似乎可以解决问题。这是添加的,因为某些区域设置在按照指定格式化整数时将使用非 ASCII 十进制数字 here .我认为我的应用可用的区域不会出现这种情况,因此它应该可以解决问题。
编辑:
NumberFormat numberFormatter = NumberFormat.getIntegerInstance(new Locale("en_UK"));
可以替换为
NumberFormat numberFormatter = NumberFormat.getIntegerInstance(new Locale("en", "GB"));
这将防止默认语言环境使用非 ASCII 十进制数字。
关于android - 数字格式 Android 5.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27400501/