为Android API等级15及以上格式化货币或双倍

时间:2016-12-27 11:12:25

标签: java android

我想格式化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显示它。

3 个答案:

答案 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