1

如果值是这样的 (0.0007) 以小数点后 3 个零结尾,我得到的结果为 4.0E-4 。

请告诉我如何解决这个问题

这是我的程序。

package com;
import java.text.DecimalFormat;
public class Test {
    public static void main(String args[]) {
        try {
            String result = "";
            Test test = new Test();
            double value = 0.0004;
            if (value < 1) {
                result = test.numberFormat(value, 4);
            } else {
                result = test.numberFormat(value, 2);
            }
            System.out.println(result);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public String numberFormat(double d, int decimals) {
        if (2 == decimals)
            return new DecimalFormat("#,###,###,##0.00").format(d);
        else if (0 == decimals)
            return new DecimalFormat("#,###,###,##0").format(d);
        else if (3 == decimals)
            return new DecimalFormat("#,###,###,##0.000").format(d);
        else if (4 == decimals)
            new DecimalFormat("#,###,###,##0.00##").format(d);
        return String.valueOf(d);
    }

}
4

2 回答 2

6

您只是忘记了 return 声明。

else if (4 == decimals)
    return new DecimalFormat("#,###,###,##0.00##").format(d);

因此,在这种4情况下,您使用DecimalFormat格式化您的数字,但在最后的 else 之后只返回双精度的正常字符串表示。

于 2013-06-25T12:40:47.430 回答
2

这个怎么样:

public static String numberFormat(double d, int decimals) {
    return String.format("%." + decimals + "f", d);
}

看起来比你现在做的更干净。

于 2013-06-25T12:40:47.117 回答