クラスのメソッドと機能を試していますが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桁の小数を含む数値は表示されません。