2017-10-26 21 views
5

I (Visual Studio izle aracıyla testere) vardır:Neden float.min C++ ve C# arasında farklıdır? C#

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

Neden aynı değerler değildir:

float.MinValue = -3.40282347E+38 

Ve C++

? Ve nasıl C++ 'da -3.40282347E+38 (C# değeri) alabilirim?

+9

Belgelerini okudun mu? Std :: numeric_limits :: en düşük() 'ile karşılaştınız mı? – StoryTeller

+4

Asgari değeri en düşük sonlu değere (yani temsil edilebilecek en küçük pozitif değer) karşılaştırdığınızı düşünüyorum. – juharr

+6

Biri en büyük negatif değer, diğeri en küçük pozitif değerdir. İkisi de "minimal" ama farklı duyularda. – molbdnilo

cevap

17

numeric_limits::lowest ürününü incelemektesiniz. Orada ifade edildiği gibi:

olan sayısal tür T ile düşük sonlu değer gösterilebilen döndürür, sonlu bir x değeri başka bir sonlu değer y y < x olduğu şekilde. Bu, kayan nokta türleri için std::numeric_limits<T>::min()'dan farklıdır.

+1

Tamamen dürüst olmak gerekirse, float.Epsilon'u arıyor olabilirdi: D – decPL

+2

Eh, epsilon değeri için değil, C++'da -3.40282347E + 38 değerini nasıl alabileceğini sordu. – Jodocus

+0

Evet, en düşük ben tam olarak aradığım şey. teşekkür ederim –

4

Gösterdiğiniz iki değer iki farklı şeydir. Birincisi, -3.40282347E + 38, bir büyük negatif değeridir; Bir float olarak temsil edilebilecek en küçük değer. İkincisi, 1.17549435e-038, bir minik negatif değeridir; Temsil edilebilecek 0'dan büyük en küçük sayıdır.