有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我已将最大分数位数设置为4, 但是为什么N.doublevalue()的输出是1234.567899999 不是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) 个答案

  1. # 1 楼答案

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