2010-03-27 2 views
22

limits.h은 비 부동 소수점 연산 유형에 대한 제한을 지정합니다. INT_MININT_MAX. 이 값은 int를 사용하여 표현할 수있는 가장 음수 값과 양의 값입니다.왜 FLT_MIN이 0입니까?

float.h에는 FLT_MINFLT_MAX에 대한 정의가 있습니다.

NSLog(@"%f %f", FLT_MIN, FLT_MAX); 

다음과 같은 출력을 얻을 : 당신이 할 경우, 다음 사용자가 예상하는대로

FLT_MIN = 0.000000, FLT_MAX = 340282346638528859811704183484516925440.000000 

FLT_MAX는, 정말 많은 수의 동일을, 그러나 왜 정말의 FLT_MIN 동일 제로 대신 수행 큰 음수?

+1

내 컴퓨터의 'FLT_MIN'은 (는) '1.17549435e-38F'입니다. –

+2

값을 어떻게 확인하고 있습니까? 헤더 파일을 어딘가에서 찾고 있습니까? printf 사용? (printf를 사용한다면 "% f"를 사용하지 않을 것입니다. "% e"가 지수 표기법을 사용하기를 원할 것입니다.) – Cascabel

+0

Q와 A를 모두 업데이트하여 % f printf 문제. –

답변

49

실제로는 0이 아니지만 printf 또는 NSLog을 사용하여 검사 할 경우 0이 될 수 있습니다. %f을 사용하십시오.

/* Minimum normalized positive floating-point number, b**(emin - 1). */ 

참고 문장의 긍정적 :
float.h 따르면 키 (Mac OS X 10.6.2 적어도) FLT_MIN 같이 설명보다 FLT_MIN 최소 지칭 (정규화) 번호 큰 제로. (훨씬 작은 비표준 숫자가 있습니다.)

최소 부동 소수점 수 (음수 포함)를 원하면 -FLT_MAX을 사용하십시오.

+0

이것은 나에게도 답장처럼 보이지 않습니다. 나는 그 질문이 매우 작고 긍정적 인 것이 아니라 제로라고 생각했습니다. – Cascabel

+0

0은 엄격하게 양수가 아니며 값은 1.4e-45이거나 언더 플로우 직전의 값이 무엇이든간에 값이되어야한다고 주장 할 수 있습니다. –

+0

@ 이그나시오 : 예, 그게 핵심 이죠, 그렇죠? – Cascabel

11

'% f'형식은 고정 된 형식으로 소수점 6 자리를 인쇄합니다. FLT_MIN이 훨씬 작기 때문에 고정 소수점에서는 0과 같습니다. '% e'또는 '% g'형식을 사용하면보다 형식화 된 응답을 얻을 수 있습니다. FLT_MAX와 유사합니다.

#include <float.h> 
#include <stdio.h> 
int main(void) 
{ 
    printf("MIN = %f, MAX = %f\n", FLT_MIN, FLT_MAX); 
    printf("MIN = %e, MAX = %e\n", FLT_MIN, FLT_MAX); 
    return(0); 
} 


MIN = 0.000000, MAX = 340282346638528859811704183484516925440.000000 
MIN = 1.175494e-38, MAX = 3.402823e+38