2016-12-27 53 views
3

我想在Android格式化號碼(或Java爲此事)說格式化貨幣或雙爲Android API級別15以上

12345.67 

12,345.67 

但它會成功API級別較低,即API級別15以上。

我試圖的NumberFormatNumberFormat.getInstance().format(myNumber)NumberFormat.getCurrencyInstance().format(myNumber)無濟於事。我也試過的DecimalFormat沒有成功也,也就是說,它會給你一個警告Call requires API level 24 (current min is 15)這基本上意味着,雖然我的代碼將在API級別24上運行的手機,但無法與舊版Android系統的工作,至少使用API​​級別15 。

那麼,這將是我的追索權?我不想通過實用函數的方式來使用它,但最好使用庫中的方法。此外System.out.format()是不可能的,因爲我想表明它使用Toast

+0

做你的正則表達式 –

+0

@VivekMishra嘗試,我會試試看。感謝這個想法。 – Edper

回答

3

哇,我認爲這是我必須做一個特殊的效用函數的東西。

這是一個簡單的方法String.format()沒有的伎倆。

Double num = 12345.67; 
String formatted = String.format("%,.2f", num); 
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

+0

感謝您的回答薩加爾。但'DecimalFormat'不允許最低API級別15。順便說一句,我使用** Android Studio 2.2 **。 – Edper

+1

@Edper好的謝謝你的答覆。請提供解決方案,如果你。快樂的編碼。 –