- blogs:
- cles::blog
2011/02/10

浮動小数点変換バグはJavaにもあった




先日、PHPで特定の浮動小数点数を入力するとハングするという問題*1*2があって、急遽アップデート版が出たりとかしてちょっとした騒ぎになりました。
<?php $d = 2.2250738585072011e-308;
これと同じような問題がJavaにもあった模様。
・Security Alert For CVE-2010-4476 Released (The Oracle Global Product Security Blog)
・Java Hangs When Converting 2.2250738585072012e-308 - Exploring Binary
確かに、下記のようなコード実行すると、fooを出力してそのまま固まってしまいますね。
ウェブアプリなんかで、外部からの入力をDoubleに変換してるところがあったりすると目も当てられないかも。
class Hoge {
public static void main(String[] args){
System.out.println("foo");
Double.parseDouble("2.2250738585072012e-308");
System.out.println("bar");
}
}
PHPとJavaでは一番最後の数字が1違いますが、これがどのような境界値なのかというのはちょっと興味があります。
今はちょっとこういうことにうつつを抜かしているわけにはいかないので、懸案が片付いたらいろいろ調べてみたいと思います。
トラックバックについて
Trackback URL:
お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/4062
Trackbacks
このエントリにトラックバックはありません
Comments
愛のあるツッコミをお気軽にどうぞ。[policy]
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
shiro
(2011/02/11 16:38)
<%HatenaAuth()%>
最小の正規化数と、最大の非正規化数のちょうど間に入る数値です。
http://blog.practical-schem...
Comments Form
コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。
OpenID を使ってログインすることができます。
サイト内検索
検索ワードランキング
へぇが多いエントリ
閲覧数が多いエントリ
1 . アーロンチェアのポスチャーフィットを修理(113929)
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(112526)
3 . 年次の人間ドックへ(111990)
4 . 2023 年分の確定申告完了!(1つめ)(111562)
5 . 三菱鉛筆がラミーを買収(111441)
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(112526)
3 . 年次の人間ドックへ(111990)
4 . 2023 年分の確定申告完了!(1つめ)(111562)
5 . 三菱鉛筆がラミーを買収(111441)
cles::blogについて
Referrers