我正在尝试类
NumberFormat
的方法和功能,我已经达到了一个奇怪的结果.我编译并运行以下程序:
public static void main(String[] args) { Locale loc = Locale.US; NumberFormat nf = NumberFormat.getInstance(loc); System.out.println("Max: "+nf.getMaximumFractionDigits()); System.out.println("Min: "+nf.getMinimumFractionDigits()); try { Number d = nf.parse("4527.9997539"); System.out.println(d); // nf.setMaximumFractionDigits(4); System.out.println(nf.format(4527.999753)); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
输出是:
Max: 3 Min: 0 4527.9997539 4,528
这意味着它没有考虑任何分数.如果我取消注释该行:
nf.setMaximumFractionDigits(4);
输出是:
Max: 3 Min: 0 4527.9997539 4,527.9998
换句话说,它运作正常.方法setMaximumFractionDigits()实际发生了什么,并且在第一种情况下它不会带来包含3个小数位的数字?