2

は私がなぜstd :: numeric_limits <float> :: min()は異なる関数で出力するためにストリームされるときの動作が異なりますか?

std::numeric_limits<float>::min() 

私はSTD呼んで奇妙な振る舞いを得た:: coutのは、私はの出力値を取得1.17549e-38私は

printf("%f", std::numeric_limits<float>::min()); 

を取得使用とは対照的に

0.000000の値。私は(std::numeric_limits<float>::min() == std::numeric_limits<float>::min())を評価するとき、私はそう

(直感的かつ論理的である)trueを得ることを

ノートでは、いずれかの私には、出力の違いを説明することができますか?

答えて

3

cppreference for numeric_limits

std::numeric_limits<float>::min()戻りFLT_MIN

%fを使用して表示される戻り値(実際には0ではありません)は、実際には小数点以下桁数が固定です。 '%f'形式は、小数点以下6桁を固定形式で印刷します。

あなたは使用することができます。

%e=gives the scientific notation 
%g=handles large floating numbers 
+0

のprintfで、この出力を修正するための任意の提案を? –

+1

代わりに '%g'または'%e'を使用してください。 –

関連する問題