c, c++ format string "%f" 나 "%g" 사용중 결과가 아래와 같이 나오는 경우가 있다.
1.$
1.#J
1.#IO
1.#INF00
헛~ 이건 뭐임?
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.#INF
-1.#IND
------------------------------------------
1.#INF00
-1.#INF00
-1.#IND00
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.$
-1.$
------------------------------------------
1.#J
-1.#J
-1.#J
-1.#J
------------------------------------------
1.#IO
-1.#IO
-1.#IO
-1.#IO
------------------------------------------
1.#INF-1.#INF
-1.#IND
------------------------------------------
1.#INF00
-1.#INF00
-1.#IND00
댓글
댓글 쓰기