Java:解析NumberFormat对象并将其分配给Number对象



我设置了最大小数位数为4,但是为什么N的输出是双值((1234.56789999999不是1234.5679?

    try{
    NumberFormat NF = NumberFormat.getInstance();
    NF.setMaximumFractionDigits(4);
    NF.setMinimumFractionDigits(3);
    Number N = NF.parse("1234.56789999999");
    System.out.println(N.doubleValue());
    System.out.println(NF.format(1234.567899999));
    }
    catch(ParseException e){e.printStackTrace();}
    }

N.doubleValue()实际上会将您的Number转换为double。double是一种基本类型,它不支持任何舍入,它是写在内存中的原始浮点值,它没有您试图转换的确切值,因此它是double可能值的最佳匹配。也就是说,double不具有所有可能的值,因为它的内存有限,双数据类型是双精度64位IEEE 754浮点。,对于较小的CCD_ 6值,精度(点后的位置(较大,而对于较大的值,精度较低。非常大的double数字在点后根本没有任何精度。float也是如此,但float的精度远低于double

最新更新