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

时间:2016-09-08 05:50:47

标签: java number-formatting digits

我将最大小数位数设为4, 但为什么N.doublevalue()的输出为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();}
    }

1 个答案:

答案 0 :(得分:0)

N.doubleValue()实际上会将您的Number转换为double。 double是一个基本类型,它不支持任何舍入,它是写在内存中的原始浮点值,它没有你尝试转换它的确切值,所以相反它是最佳匹配从double可能的值。也就是说,double没有所有可能的值,因为内存有限,双数据类型是双精度64位IEEE 754浮点数。精度(后面的位置) dot)对于小的double值更大,对于更大的值更低。非常大的double数字在点之后甚至没有任何精度。与float相同,但浮点数的精度远低于double