« Java Expert | Main | JUST Suite 2007予約 »

2007.01.28

NumberFormat#parseの挙動

java.text.DecimalFormat decimalFormat = new java.text.DecimalFormat("####0.####");
decimalFormat.setMaximumIntegerDigits(5);
decimalFormat.setMaximumFractionDigits(4);

という風にdecimalFormatを構築して、いろいろとテスト。

System.out.println(decimalFormat.format(0d));
→"0"を出力

System.out.println(decimalFormat.format(1.23456d));
→"1.2346"を出力

System.out.println(decimalFormat.format(123456.789d));
→"23456.789"を出力

とまぁ、ここまでは期待通りの動き。
ところが、formatではなくparseで文字列を処理した場合、

System.out.println(decimalFormat.parse("01.1200"));
→"1.12"を出力(期待通り)

System.out.println(decimalFormat.parse("01.12003"));
→"1.12003"を出力(小数点以下4桁で処理されない?)

System.out.println(decimalFormat.parse("123456.789"));
→"123456.789"を出力(整数部5桁で処理されない?)

System.out.println(decimalFormat.parse("1AA"));
→"1"を出力

 先頭から数値以外の文字が出てくるところまでを処理するというのはJavaDocに書かれていたのでいいのですが、桁数のチェックを有効にすることはできないんだろうか・・・。自前で処理を書くしかないのかなぁ。

|

« Java Expert | Main | JUST Suite 2007予約 »

Java」カテゴリの記事

Comments

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack


Listed below are links to weblogs that reference NumberFormat#parseの挙動:

« Java Expert | Main | JUST Suite 2007予約 »