내가 IEEE 위의 글에서 다음과 같은 링크IEEE 부동 소수점 숫자
에서 부동 소수점 숫자 공부, 나는 특별한 작업의 논리 뒤에 명확하지 않다. 왜 그들은 이러한 방식으로 특수 작업을 결정했는지 (Infinity-Infinity가 Nan 인 이유를 의미)와 다른 모든 작업도 결정했습니다.
누군가 알고 있다면, 제발 도와주세요.
내가 IEEE 위의 글에서 다음과 같은 링크IEEE 부동 소수점 숫자
에서 부동 소수점 숫자 공부, 나는 특별한 작업의 논리 뒤에 명확하지 않다. 왜 그들은 이러한 방식으로 특수 작업을 결정했는지 (Infinity-Infinity가 Nan 인 이유를 의미)와 다른 모든 작업도 결정했습니다.
누군가 알고 있다면, 제발 도와주세요.
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
마지막 표현식 까다로운 일이다. 왜 이런 일이 발생하는지 다른 곳에서 설명합니다. 기본적으로 중간 계산은 더 큰 유형으로 수행됩니다.