기본 콘텐츠로 건너뛰기

소숫점 0.0 으로 나눈 결과 표시 방법

c, c++ format string "%f" 나 "%g" 사용중 결과가 아래와 같이 나오는 경우가 있다.

1.$
1.#J
1.#IO
1.#INF00


헛~ 이건 뭐임?

stackoverflow.com에 관련 내용이 있었음

http://stackoverflow.com/questions/840081/what-does-floating-point-error-1-j-mean

내용을 읽어본 즉 소숫점 0.0으로 나눈 경우와 관련이 있다고 하는 군요.
(Devide by floating point zero)
결론적으로 포맷에 따라 다른 결과를 보여줄 뿐, 같은 내용이었습니다.
참고하세요.

아래는 MSVS 2010 Console Application 프로젝트에서 테스트한 결과 입니다.


//------------------------------------------

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

------------>> result


1.$
-1.$
-1.$
------------------------------------------
1.#J
-1.#J
-1.#J
------------------------------------------
1.#IO
-1.#IO
-1.#IO
------------------------------------------
1.#INF
-1.#INF
-1.#IND
------------------------------------------
1.#INF00
-1.#INF00
-1.#IND00


댓글

이 블로그의 인기 게시물

이클립스 실행 오류와 eclipse.ini 수정

1. 실행시 Java was started but returned exit code=13 에러가 날때 --> Win7 64bit를 사용중인데, 이 오류가 발생하고 있었습니다. 제가 자바도 이클립스용도 32비트 버젼을 사용중이었는데, 자바만 64비트용으로 설치를 했더니, 생긴 문제였습니다. 이클립스 64비트를 설치하시면 해결됩니다. 2.이클립스 폴더내 eclipse.ini 기본값(보통 아래 처럼 되어 있습니다.) -startup plugins/org.eclipse.equinox.launcher_1.1.0.v20100507.jar --launcher.library plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.1.R36x_v20100810 -product org.eclipse.epp.package.jee.product --launcher.defaultAction openFile --launcher.XXMaxPermSize 256M -showsplash org.eclipse.platform --launcher.XXMaxPermSize 256m --launcher.defaultAction openFile -vmargs -Dosgi.requiredJavaVersion=1.5 -Xms40m -Xmx512m 3.실행하자 마자 javaw.exe 찾기 실패시  --> jdk가 설치된 경로(javaw.exe가 있는 경로)를 추가해준다. 맨 아래쪽에 삽입하니 안되더군요.(왜죠?) -vmargs 윗부분에 삽입했습니다. 다른 블로그님 들 글에선 open 위쪽에 쓰니 괜찮다는 글도 있으니 참고하세요. -vm c:\Program Files\java\jre6\bin\javaw.exe 4.이클립스 속도 향상을 위한 추가값 출처:  http://blog.naver.com/sungback/90097516641 검색도중 이클립스 속도 향상 정보를 발

[c#.net] WPF 사용 중 xaml관련 실행시 오류 와 대처 방법

wpf 사용 중 xaml관련 실행시 오류 가 발생해서 자그마치 2일을 소비 했다..--;; 오류 내용은 아래와 같다. ================================== 'System.Windows.Markup.XamlParseException' 형식의 첫째 예외가 PresentationFrameWork.dll에서 발생했습니다. 추가 정보: '지정된 바인딩 제약 조건과 일치하는 'PapaZone.MainWindow' 형식에 대한 생성자 호출에서 예외가 throw 되었습니다.' 줄 번호 '21' 및 줄 위치 '9' 이 예외에 대한 처리기가 있으면 프로그램을 안전하게 계속할 수 있습니다. [] 이 예외 형식이 throw되면 중단 ================================== 위 Xaml 오류 메세지만으로는 내용 추적 불가하여, 도대체 뭔가 했다. 검색해도 뚜렷한 답변은 없었지만, 여러가지 의견을 종합해 보면 아래와 같다. 1. xmlns 관련 파일 과 관련된 파일 로딩 실패 이거나, 2. 신규로 추가된 namespace 에 속한 태그 사용시 오류로 판단되어 태그 하나씩 삽입하며 테스트 해봐야 한다고 함. 해결한 지금에 원인을 보면, xaml 에서 clr-namespace 로 추가된 항목들이 로딩에 실패해서 발생한 것이며, 추가된 항목은 있었으나, 이것과 연결된 파일이 없어서 로딩되지 않는 것이 문제였다. 오늘도 즐거운 하루~~

[MSSQL] SQL Server 에 원격 접속을 못하는 경우 조치 방법

[MSSQL] SQL Server 에 원격 접속을 못하는 경우 조치 방법 내부 오류 추적 결과 다음과 같이 나옴. [Microsoft][ODBC Driver 13 for SQL Server]TCP Provider: 대상 컴퓨터에서 연결을 거부했으므로 연결하지 못했습니다. SqlState : 08001, NativeError : 10061 오류 원인과 처리 1.SQL 서버 로그인 계정 틀린 경우 -> A.SQL Managerment Studio에서 사용할 DB 접속 '로그인' 사용할 계정의 아이디/암호 확인 2.TCP/IP 접속 권한이 없는 경우 -> A.SQL Server 구성 관리자를 실행에서 TCP/IP 허용 되어 있는지 확인 B. 서비스 포트 값이 (보통 1433) 맞는지 확인 C. 외부에서 접속하는 경우에는 방화벽 허용 되엉 있는지 확인 C. 서비스 재시작 3.Windows 인증 모드만 허용 인 경우 -> A.SQL Managerment Studio에서 사용할 DB 접속하고, 우클릭 하여 속성 정보 확인해서 B.연결에서 인증모드 '로그인' 사용할 계정의 아이디/암호 확인 4.'exec Sp_ReadErrorLog' 명령어를 사용해서, 로그인 실패 로그를 확인해서 원인을 분석한다.