2016-09-28 2 views
4

Q : DBL_MIN이 가장 작은 양수 값입니까?DBL_MIN이 양의 가장 작은 double입니까?

아래 코드는이 질문을 아니요로 대답 한 것으로 보입니다. 그러나 이것이 사실이라면 DBL_MIN은 어떻게 정의되고 그 용도 나 용도는 무엇입니까?

플랫폼 : Windows7의 & 비주얼 스튜디오 2,013

double next_to_zero = std::nextafter(0.0,DBL_MIN); 
bool b = DBL_MIN <= next_to_zero; 
std::cout << std::boolalpha 
      << "is dbl_min the smallest representable double? " 
      << b << '\n'; 

std::cout << std::setprecision(56) 
      << "dbl_min = " << DBL_MIN << '\n' 
      << "next to zero = " << next_to_zero; 

출력 :

가 표현할 수있는 가장 작은 두 dbl_min입니까? 거짓

dbl_min = 2.2250738585072013830902327173324040642192159804623318306e-308

다음 제로 = 4.9406564584124654417656879286822137236505980261432476443e-324

+0

C++ 표준 : : numeric_limits를 참조하십시오 :: 분 문서 : http://en.cppreference.com/w/cpp/types/numeric_limits/min –

답변

7

내가 IEEE754 부동 소수점에, 아마도 불필요,이 대답을 제한하고 있습니다.

DBL_MIN은 수는 허용되지 않습니다.

그러나 std::nextafter은 수를 반환 할 수 있습니다.

따라서 후자의 반환 값은 DBL_MIN보다 작을 수 있습니다.

자세한 내용은 https://en.wikipedia.org/wiki/Denormal_number

+1

그래서, DBL_MIN 이중 가장 작은 정상을 값? – user1235183

+0

예, 그 중 하나입니다. – Bathsheba

+0

인텔에서는 부동 소수점 레지스터가 80 비트 길이의 double이며 더 많은 값을 가질 수 있다는 점도 주목할 가치가 있습니다. –

관련 문제