float a = 123456789.0e-5f;
이에 결과값이 왜 1234.567871인지 궁금합니다.
게시판에 올라와있는 답변을 다 읽어봐도 이해가 되지 않습니다.
서식 문자열에 자릿수가 지정되지 않은 경우 소수 이하는 6자리만 표시되고 반올림한다는건 이해가 됩니다.
그런데 1234.56789가 어느자리에서 반올림이 되는지, 9가 반올림해서 어떻게 7이 되는지, 뒤에 1은 왜 붙는지는 이해가 안됩니다. 답변 해 주세요.
답변 중에 '서식 문자열에 자릿수를 지정하지 않으면 소수 이하는 6자리까지 표시됩니다.
지수 표현 값에서 생략된 소수이하 부분이 더 표시된 것입니다.' 라는 답변도 있었는데 지수 표현값에서 생략된 소수 이하부분이 무엇인가요?? 답변 해 주세요.
안녕하세요.
실수형의 경우 숫자를 저장할 때 지수부와 가수부를 분리하여 저장하는데, 이를 다시 출력할 때 유효 자리수에 맞게 출력합니다.
이로 인해 C나 Java는 소수점 자리수를 지정하지 않은 경우 기본적으로 6자리를 표현하기 위해 지수부와 가수부로 나눠 저장된 내용을 다시 자리수에 맞추어 출력하면서 일부 오차가 발생하는데, 이 경우가 그런 경우라고 할 수 있습니다.
C언어 처리 과정에 따른 오차이므로 세부적인 내용을 언급할 수는 없지만 이 문제의 경우 소수점 자리수에 맞게 값이 어떻게 출력되는지 확인하는 정도로만 이해하시면 될 것 같습니다.
저장된 값 보다 더 많은 유효 자리수를 표시하는 경우는 오차가 발생할 수 있으므로 문제로 출제될 가능성이 낮습니다.
오늘도 즐거운 하루 되세요.
-
*2017-03-14 09:45:41
안녕하세요.
실수형의 경우 숫자를 저장할 때 지수부와 가수부를 분리하여 저장하는데, 이를 다시 출력할 때 유효 자리수에 맞게 출력합니다.
이로 인해 C나 Java는 소수점 자리수를 지정하지 않은 경우 기본적으로 6자리를 표현하기 위해 지수부와 가수부로 나눠 저장된 내용을 다시 자리수에 맞추어 출력하면서 일부 오차가 발생하는데, 이 경우가 그런 경우라고 할 수 있습니다.
C언어 처리 과정에 따른 오차이므로 세부적인 내용을 언급할 수는 없지만 이 문제의 경우 소수점 자리수에 맞게 값이 어떻게 출력되는지 확인하는 정도로만 이해하시면 될 것 같습니다.
저장된 값 보다 더 많은 유효 자리수를 표시하는 경우는 오차가 발생할 수 있으므로 문제로 출제될 가능성이 낮습니다.
오늘도 즐거운 하루 되세요.