天天看點

Android Java DecimalFormat中解決.00的問題

 最近在做一個數字顯示效果:每三個數字加一個逗号,并且保留兩位小數。

如:332,630.00 195,717.00 使用的代碼是:

public static String format2Decimal(float data) {
    DecimalFormat df = new DecimalFormat("#,###.00");
    return df.format(data);
}      
但是在實作數字“0.00”的時候,變成了“.00”,“0.12”變成了“.12”,這樣就不是我要的效果了。      

 查閱了資料後發現,DecimalFormat 類主要靠 # 和 0 兩種占位符号來指定數字長度。

0 表示如果位數不足則以 0 填充,# 表示隻要有可能就把數字拉上這個位置。

這樣我就想到了一個方法,把整數最後一位“#”改為“0”,嘗試性修改了一下代碼,結果完成了我要的效果。代碼如下:

/**
 * 将float類型的資料轉換成以3位逗号隔開的字元串,并且保留兩位小數
 *
 * @return
 */
public static String format2Decimal(float data) {
    DecimalFormat df = new DecimalFormat("#,##0.00");
    return df.format(data);
}

/**
 * 将float類型的資料轉換成以3位逗号隔開的字元串,并且保留一位小數
 *
 * @return
 */
public static String format1Decimal(float data) {
    DecimalFormat df = new DecimalFormat("#,##0.0");
    return df.format(data);
}

/**
 * 将float類型的資料轉換成以3位逗号隔開的字元串,并且保留整數
 *
 * @return
 */
public static String format0Decimal(float data) {
    DecimalFormat df = new DecimalFormat("#,##0");
    return df.format(data);
}      

好了,希望對大家有所幫助。