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

Java : Parse NumberFormat Object and assign it to Number Object

我已经将最大小数位数设置为 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();}
    }

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