2011-12-14 26 views
-1

我已經極大地縮小了這個問題的範圍,看起來FLT_MIN在C++中返回一個正數,大約爲1.1。在C#中float.MinValue是-3.4。這兩個數字都有很多小數位,但爲什麼兩者之間的差異?C++ FLT_MIN返回一個正數?

我不太瞭解這些值。我認爲他們會返回一個非常接近0的數字,但稍微積極一點。無論是那個還是最大的(可以這麼說)負數都可以存儲。這些都不做。

編輯對於巨大的問題變化感到抱歉,但這是實際的問題,這對其他人更有幫助。

EDIT逆C++ max是相同C#

+0

這裏的代碼示例太大,請將它們縮小(即製作測試用例)。 – Arafangion 2011-12-14 15:06:59

+6

在調試器中遍歷它們並查看它們的行爲偏差。這是錯誤。 – 2011-12-14 15:07:30

+0

我只是做了這件事,而我注意到的第一件事情就是不同的是dirfrac.z在每個中都不相同。在C#中大約是-3.4,C++大約是1.1。不知道爲什麼。 – SirYakalot 2011-12-14 15:55:12

回答

0

FLT_MIN在C99中定義並且被C++ 0x稱爲「最小標準化正浮點數」。我想知道你如何得到1.1

如果您想要獲得某種類型中可呈現的最小有限數字,您可以使用<limits>中定義的std::numeric_limits<>::lowest()。例如,std::numeric_limits<float>::lowest()會給你float中最小的數字,這是(最)負數。

0

min值似乎minmax均爲3D矢量以及函數(或宏)。在C#版本中,向量爲minmax,函數爲Math.MinMath.Max。我的猜測是,你的向量類有一個運算符()和兩個參數,所以你不會得到編譯錯誤,但這不同於通常的min(..)/ max(..)函數。