2

나는왜 std :: numeric_limits <float> :: min()은 다른 기능으로 출력되도록 스트리밍 할 때 동작이 다른가요?

std::numeric_limits<float>::min() 

I는 표준 전화로 이상한 행동을 가지고 :: cout을 내가의 출력 값을 얻기 1.17549e-38 내가

printf("%f", std::numeric_limits<float>::min()); 

를 얻을 사용 달리

0.000000의 값

내가 ( std::numeric_limits<float>::min() == std::numeric_limits<float>::min())을 평가할 때 내가 얻을

참고

그래서, 어떤 사람이 나에게 출력의 차이를 설명 할 수있다 (직관적이고 논리적이다) true?

답변

3

cppreference for numeric_limits :

std::numeric_limits<float>::min() 반환 FLT_MIN.

%f을 사용하여 표시되는 반환 값 (실제로는 0이 아님)은 실제로 고정 된 소수 자릿수로 서식이 지정됩니다. '%f' 형식은 고정 된 형식으로 소수 6 자리를 인쇄합니다.

당신은 사용할 수 있습니다

%e=gives the scientific notation 
%g=handles large floating numbers 
+0

어떤 제안을 printf와이 출력을 해결하기 위해? –

+1

'% g' 또는'% e'을 대신 사용하십시오. –