2014-01-23 7 views
-2

내가 IEEE 위의 글에서 다음과 같은 링크IEEE 부동 소수점 숫자

IEEE floating Point Number

에서 부동 소수점 숫자 공부, 나는 특별한 작업의 논리 뒤에 명확하지 않다. 왜 그들은 이러한 방식으로 특수 작업을 결정했는지 (Infinity-Infinity가 Nan 인 이유를 의미)와 다른 모든 작업도 결정했습니다.

누군가 알고 있다면, 제발 도와주세요.

답변

0

NaN은 "오류"또는 "알 수 없음"과 유사합니다. NaN의 모든 작업은 NaN이됩니다. Infinity-Infinity은 잘 정의 된 방식으로 오버플로를 처리하기 위해 도입되었습니다. 오버플로가 발생하면 얼마나 많은 일이 일어 났는지 확신 할 수 없습니다. 따라서 두 개의 무한한 값이 실제로 다를 수 있습니다. 따라서 Infinity - Infinity에는 잘 정의 된 값이 없으며 NaN으로 처리됩니다.

C 예 :

#include <stdio.h> 
#include <float.h> 

int main() { 
    double e, f; 

    /* floats are always implicitly converted to doubles for computation */ 
    /* but intermediate values can be larger */ 
    e = DBL_MAX * 2.0; 
    f = DBL_MAX * 2.5; 
    printf("%-12s%e\n", "DBL_MAX", DBL_MAX); 
    printf("%-12s%e\n", "e",   e); 
    printf("%-12s%e\n", "f",   f); 
    printf("%-12s%e\n", "f - e",  f - e); 
    printf("%-12s%e\n", "f - e expr", DBL_MAX * 2.5 - DBL_MAX * 2.0); 

    return 0; 
} 

출력 (GCC 4.3.2 리눅스 2.6.26-2-686)

 
DBL_MAX  1.79769e+308 
e   inf 
f   inf 
f - e  nan 
f - e expr 8.98847e+307 

마지막 표현식 까다로운 일이다. 왜 이런 일이 발생하는지 다른 곳에서 설명합니다. 기본적으로 중간 계산은 더 큰 유형으로 수행됩니다.