【发布时间】:2012-12-25 05:03:12
【问题描述】:
我正在尝试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 个小数位的数字?
【问题讨论】:
-
你的意思是手动设置数字的小数位吗?