문제

최근에, 때때로 (드물게) 응용 프로그램에서 데이터를 내보낼 때 내보내기 로그에는 "-1.#j"모양의 플로트 값이 포함되어 있습니다. 나는 그것을 재현 할 수 없었기 때문에 이진에서 플로트가 어떻게 보이는지 또는 Visual Studio가 어떻게 표시되는지 모릅니다.

나는 printf의 소스 코드를 보려고 시도했지만 아무것도 찾지 못했습니다 (100%는 올바른 버전을 보았을 것입니다 ...).

인터넷 검색을 시도했지만 Google은 모든 #을 버립니다. 플로트 오류 목록을 찾을 수 없습니다.

도움이 되었습니까?

해결책

음의 무한대 또는 NAN (숫자가 아님) 일 수 있습니다. 필드의 서식으로 인해 printf는 그것들을 구별하지 않습니다.

Visual Studio 2008에서 다음 코드를 시도했습니다.

double a = 0.0;
printf("%.3g\n", 1.0 / a);  // +inf
printf("%.3g\n", -1.0 / a); // -inf
printf("%.3g\n", a / a);    //  NaN

다음 출력이 발생합니다.

1.#J
-1.#J
-1.#J

.3 형식 지정자를 제거하면 다음과 같이 표시됩니다.

1.#INF
-1.#INF
-1.#IND

따라서 0/0이 NAN을 제공하고 -1/0은 음의 무한대를 제공합니다 (NAN, -INF 및 +Inf는 제대로 기억하면 유일한 "잘못된"부동 소수점 번호입니다).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top