2017-10-26 10 views
5

私は(Visual Studioの時計ツールでのこぎり)があります。C++とC#の間でfloat.minが異なるのはなぜですか? C#ので

float.MinValue = -3.40282347E+38 

そして、C++で:

std::numeric_limits<float>::min() = 1.17549435e-038 

をなぜ値が同じではありませんか?そして、私は-3.40282347E+38(C#値)をC++でどうやって得ることができますか?

+9

あなたはその文書を読んでいますか? 'std :: numeric_limits :: lowest()'に出くわしましたか? – StoryTeller

+4

最小値と最小有限値(つまり、表現できる最小の正の値)を比較していると思います。 – juharr

+6

1つは負の最大値で、もう1つは正の最小値です。彼らはどちらも「最小限」ですが、違った感覚です。 – molbdnilo

答えて

17

あなたはnumeric_limits::lowestを探しています。そこに述べたように:

は数値タイプT、 によって最小有限値の表現を返し、有限値xは、他の有限値y Y < Xが存在しないようにします。これは、浮動小数点型の の場合はstd::numeric_limits<T>::min()とは異なります。

+1

完全に公正であるために、彼は代わりに 'float.Epsilon'を探していたかもしれません:D – decPL

+2

まあ、彼は-3.40282347E + 38をC++で得る方法を尋ねました。 – Jodocus

+0

はい、私が探していたものがまさに最低です。ありがとうございました –

4

あなたが表示している2つの値は、2つの異なるものです。最初のもの-3.40282347E + 38は、の大きなマイナスの値です。これはフロートとして表現できる最小の値です。 2番目のものは、1.17549435e-038で、で、値は負ではありませんです。それは表現できる0より大きい最小の数です。

関連する問題