2015-11-20 2 views
5

У меня есть некоторые проблемы с пониманием следующего кода:Двойного сравнения - числовые пределы

double a = -1000; 
double b = numeric_limits<double>::min(); 

if (a < b) 
{ 
    cout << "why?"; 
} 

И выход:

почему?

Как можно -1000 быть ниже numeric_limits<double>::min()?

+4

http://en.cppreference.com/w/cpp/types/numeric_limits/min обратите внимание на упоминание «самого низкого» там, в отличие от 'min()' – JSF

ответ

9

Это потому, что numeric_limits<double>::min(); - это самое низкое положительное число, выражаемое в двойной точности с плавающей точкой, а не на самом отрицательном числе.

Смежные вопросы