ものがたり(旧)

atsushieno.hatenablog.com に続く

bug in JDK? java.text.DecimalFormat

Javaは普段あんましいじらなくなってしまったので疑わしいのだけど。


System.out.println (
new DecimalFormat (".00").format(0.12));

format patternのBNFを見た感じ、エラーにならなければならないはずだが、手元のJDK 1.5では0.12と出力される。DecimalFormatで'.'が出てきて良いのはfractionの前だけのはずだ。そしてfractionが出てくる前には、省略できないIntegerがあるわけで。'.'は(ドキュメント上にきっちりした定義は無いけど明らかに)special charactersだから、Prefixとしても受け容れられないわけで。

何でそんなの見ているかというと、XSLT 1.0がJDKのDecimalFormatを使っているから。

追記: bugparadeを眺めていたら似たようなのが見つかった。JDKもこの辺はけっこうバグがあるっぽい。