使用十进制格式显示前导零

时间:2013-06-05 08:55:13

标签: java decimal

我试图使用十进制格式显示十进制的前导零...我的代码如下:

import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.text.ParseException;

public class ElementValueUtil {
    public static String formatDoubleNonExponential(double value) {
        return formatDoubleNonExponential(value, null);
    }

    public static String formatDoubleNonExponential(double value, String elementName) {
        DecimalFormat decimalFormat = new DecimalFormat();

        Integer decimalPrecision = 5;
        decimalFormat.setMaximumFractionDigits(decimalPrecision);
        decimalFormat.setRoundingMode(RoundingMode.HALF_UP);
        String exponentialNum = decimalFormat.format(value);
        try{
            return String.valueOf(decimalFormat.parse(exponentialNum));
        }catch(ParseException exception){
            return String.valueOf(value);
        }
    }

    public static void main(String[] args) {
        Double num = 12.4567012;
        System.out.println(formatDoubleNonExponential(num));
    }
}

我的输出为“12.4567” 但我期待“12.45670”

任何帮助将不胜感激......

注意:整数部分可能有任意数字的位数,也可能没有任何数字......但如果小数部分的小数超过5,则小数部分应舍入为5位小数

For example 
Input        Output
12.25        12.25
125.2345     125.2345
12.12340675  12.12341
12.12340123  12.12340

1 个答案:

答案 0 :(得分:1)

试试这个

static String format(double d) {
    String s  = new DecimalFormat("").format(d);
    if (s.length() - s.indexOf(',') > 5) {
        s = String.format("%.5f", d);
    }
    return s;
}

public static void main(String[] args) throws Exception {
    System.out.println(format(12.25));
    System.out.println(format(125.2345));
    System.out.println(format(12.12340675));
    System.out.println(format(12.12340123));
}

输出

12.25
125.2345
12.12341
12.12340