NumberFormat:setMaximumFractionDigits - 未给出预期结果

时间:2014-10-17 01:08:39

标签: java

试图弄清楚为什么下面的代码没有输出期望的结果。请指教。谢谢。

    import java.text.*;

public class Test {
    public static void main(String[] args) {
        String s = "987.123456";
        double d = 987.123456d;
        NumberFormat nf = NumberFormat.getInstance();
        nf.setMaximumFractionDigits(5);
        System.out.println(nf.format(d) + " ");
        try {
            System.out.println(nf.parse(s));
        } catch (Exception e) {
            System.out.println("got exc");
        }
    }
}

输出:

 987.12346 // Expected 987.12345 not 987.12346
987.123456

1 个答案:

答案 0 :(得分:2)

您的第二次打印不会格式化您已解析的double

// System.out.println(nf.parse(s));
System.out.println(nf.format(nf.parse(s))); // <-- 987.12346

要获得您要求的输出,您可以添加对NumberFormat#setRoundingMode(RoundingMode)的调用 - 类似

nf.setMaximumFractionDigits(5);
nf.setRoundingMode(RoundingMode.DOWN);