我想格式化Android
(或Java
的数字)说
12345.67
到
12,345.67
但它适用于较低的API级别,即API级别15及以上。
我尝试 NumberFormat NumberFormat.getInstance().format(myNumber)
或NumberFormat.getCurrencyInstance().format(myNumber)
无济于事。我也尝试了 DecimalFormat 也没有成功,也就是说,它会给你一个警告Call requires API level 24 (current min is 15)
,这基本上意味着虽然我的代码可以在API级别24上运行,但不适用于旧版本至少使用API级别15的Android。
那么,我的追索权是什么?我不想通过实用程序函数的方式来使用它,但最好是来自库的方法。另外System.out.format()
是不可能的,因为我想使用Toast
显示它。
答案 0 :(得分:3)
这只是一种String.format()
方法。
Double num = 12345.67;
String formatted = String.format("%,.2f", num);
答案 1 :(得分:1)
使用DecimalFormat
中的java.text
来处理21 {/ 1>以下的Minimum API
#import java.text
....
double num = 123456.78;
String newValue = new DecimalFormat("##.##").format(num);
答案 2 :(得分:0)
嘿,我已经使用了这个代码,它适用于API 17(4.2.2)。所以我认为它应该适用于API 15及更高版本。
public static String Round(String Rval, int Rpl) {
DecimalFormat df = null ;//("#.00");
String finalStr = "";
if(Rval.contains(".")){
String [] inputArr = Rval.split("\\.");
String newValue = "";
/*if(inputArr[1].length() == 1){
inputArr[1] = inputArr[1] + "0";
}else if(inputArr[1].length() >= 2){
inputArr[1] = inputArr[1].substring(0,2);
//inputArr[1] = String.valueOf(Math.round(Integer.parseInt(inputArr[1])));
}*/
int length = inputArr[0].length();
if(length == 7){
df = new DecimalFormat("#,###,###.00");
newValue = df.format(Double.parseDouble(Rval));
}else if(length == 8){
df = new DecimalFormat("#,##,##,###.00");
newValue = df.format(Double.parseDouble(Rval));
}else if(length == 9){
df = new DecimalFormat("##,##,##,###.00");
newValue = df.format(Double.parseDouble(Rval));
}else if(length == 6){
df = new DecimalFormat("###,###.00");
newValue = df.format(Double.parseDouble(Rval));
}else if(length == 5){
df = new DecimalFormat("##,###.00");
newValue = df.format(Double.parseDouble(Rval));
}else if(length == 4){
df = new DecimalFormat("#,###.00");
newValue = df.format(Double.parseDouble(Rval));
}else{
df = new DecimalFormat("#0.00");
newValue = df.format(Double.parseDouble(Rval));
}
finalStr = newValue ;//+"."+ inputArr[1];
}else{
finalStr = Rval + ".00";
}
return finalStr;
}
我现在已经检查了我的设备。如果我错了请纠正我,但不要投票。 minSdkVersion 15