我设置了最大小数位数为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
。