Entries

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

numeric_limits<int>::min()

タグ: C++

numeric_limits の静的関数 min() が返す値は、整数型版と浮動小数点型版で意味が異なっている。

std::cout << std::numeric_limits<int>::min() << std::endl;
std::cout << std::numeric_limits<double>::min() << std::endl;

このコードの実行結果は以下の通り。

-2147483648
2.22507e-308

整数型版の min() は「最小有限値」(その型で表現可能な最小の値)を返す。
それに対し、浮動小数点型版の min() は「正規化された最小の正値」(その型で表現可能な最小の正の値)を返す。

これは正直、酷い仕様だと思う。
例え違うクラス同士であっても「直感的に同じ意味を持つ結果が返ることを期待してしまう同名関数は避けるべき」であろうに、ほぼ同じクラス同士でこれは紛らわしいことこの上ない。
おそらくC言語の INT_MINDBL_MIN の関係をそのまま引き継いでいるのだろうが……
ここに関してはCのそれらとは別物と考えて、C++から入った人に優しい仕様(整数型でも浮動小数型でも「最小有限値」を返す仕様)にしてほしかった。

スポンサーサイト

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://idlysphere.blog66.fc2.com/tb.php/27-4908e3ac
この記事にトラックバックする(FC2ブログユーザー)

Appendix

タグ

Blog内検索

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。