1. ホーム
  2. c++

[解決済み] floatの最大値/最小値を初期化するには?

2022-09-27 18:01:55

質問

floatやdoubleの絶対的な最大値や最小値をハードコードするにはどうしたらよいでしょうか。私は、単純に反復して最大のものをキャッチすることによって、配列の最大/最小値を検索したいです。

浮動小数点数の正と負の無限大もありますが、代わりにそれを使うべきですか?もしそうなら、私のコードでそれをどのように表記すればよいですか?

どのように解決するのですか?

あなたは std::numeric_limits で定義されている <limits> を使って、型の最小値や最大値を求めることができます(その型に特化したものが存在する限り)。また、無限大を検索するために使うこともできます(そして、そのために - を前に置く)。

#include <limits>

//...

std::numeric_limits<float>::max();
std::numeric_limits<float>::min();
std::numeric_limits<float>::infinity();

コメントで指摘されているように min() は可能な限り低い正の値を返します。言い換えれば、表現可能な 0 に最も近い正の値です。可能な限り低い値は、可能な限り大きい値の負の値です。

もちろん std::max_element と min_element 関数 ( <algorithm> ) の方が、配列の中で最大または最小の値を見つけるには良い選択かもしれません。