Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java NumberFormat:setMaximumFractionDigits-未给出预期结果_Java - Fatal编程技术网

Java NumberFormat:setMaximumFractionDigits-未给出预期结果

Java NumberFormat:setMaximumFractionDigits-未给出预期结果,java,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.s

试图找出以下代码没有输出预期结果的原因。请告知。多谢各位

    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

您的第二次打印没有格式化已解析的
双精度

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

你为什么会这样想?
NumberFormat
正在取整。请看Sotiri,我希望如此,因为我假设,因为我将最大分数数字设置为5,对象应该返回5个不变的数字,但是没有意识到正在发生舍入。我正在阅读同一本书Rami(SCJP Sun认证的Java 6程序员),并且有完全相同的问题。感谢您帮助澄清这是四舍五入。对于其他看这个问题的人,可以在Java证书测试/考试中提出这个问题。好好学习!
nf.setMaximumFractionDigits(5);
nf.setRoundingMode(RoundingMode.DOWN);