115페이지 8번 문제에서 결과가 1234.567871이랑 1.234568e+03으로 나오는데 질문사항이 여러개 있습니다
1) 1234.567871에서 71은 대체 어디에서 튀어나온 건가요
2) 1.234568e+03에서 7은 왜 건너뛰고 8이 나오고 뒤에 있던 9는 어디로 간건가요?
3) +03에 있는 0이 123456789.0e에서 e 앞에있는 0인가요?
3-1) 저게 맞으면 왜 저게 +03으로 간건지 해설 부탁드립니다
안녕하세요 길벗수험서 운영팀입니다.
[1]
%f 에 대한 출력은 본래 실수인 1234.567890이 나와야 하지만 컴퓨터의 부동소수점의 고질적인 정밀도 문제로 인해 오류가 발생하여 마지막에 71이 나오게 되는데, 이 부분은 시험에 나오지 않는 부분이므로 어떤 수가 나와야 하는지만 알아두시면 됩니다.
[2]
소수점 7번째 자리의 숫자 8이 반올림되어 소수점 6번째 자리의 숫자 7에 +1이 된 결과입니다.
소수점 자리에 지정이 없다면 기본적으로 6째 자리까지만 출력되므로 9는 고려되지 않습니다.
[3]
지수 표현은 일반 실수에서 * 또는 /가, + 또는 -로 변형된 형태로 표기됩니다.
(실수)e(* → + 또는 / → -)(10의 승수)
예를 들어, 123.45 를 진수부가 한자리인 수로 표현하기 위해서는 나누기 100을 하면 되니 아래와 같이 표현할 수 있습니다. (진수부 : 실수에서 . 왼쪽부분, 즉 정수부분을 말합니다.)
123.45/100*100
= 1.2345*10^2
이것을 지수표현으로 바꾸게 되면,
1.2345e+2 가 되죠.
(10^2 는 10의 2승을 의미합니다. 10x10으로 100이죠. 3승이면 10x10x10=1000)
(문자 'e'는 해당 수가 '지수'라는 것을 의미합니다.)
0.00123을 진수부 한자리인 수로 표현하기 위해서는 곱하기 1000을 하면 되니 아래와 같이 표현이 가능합니다.
0.00123*1000/1000
=1.23/10^3
이것을 지수표현으로 바꾸게 되면,
1.23e-3 이 되죠.
해당 문제는 위와 같은 방식으로 풀어보시면 됩니다.
123456789.0e-5는 풀어보면 아래와 같은 수가 됩니다.
123456789.0/10^5 = 1234.56789
이것을 지수부 한 개만 남겨두면
1.23456789*10^3
지수로 고쳐쓰면
1.23456789e+3
여기서 문제는 C에서 별다른 서식지정자를 쓰지 않으면 실수는 소수점 7번째 자리에서 반올림된 6자리만 출력된다는 것입니다. 이것은 지수표현 또한 마찬가지 입니다. 소수점 7번째 자리인 8에서 반올림 하면 6번째 자리인 7이 1 증가하여 8이 됩니다. 수로 표현하게 되면 1.234568e+3이 되는 것이죠.
행복한 하루되세요 :)
-
관리자2021-08-30 11:37:07
안녕하세요 길벗수험서 운영팀입니다.
[1]
%f 에 대한 출력은 본래 실수인 1234.567890이 나와야 하지만 컴퓨터의 부동소수점의 고질적인 정밀도 문제로 인해 오류가 발생하여 마지막에 71이 나오게 되는데, 이 부분은 시험에 나오지 않는 부분이므로 어떤 수가 나와야 하는지만 알아두시면 됩니다.
[2]
소수점 7번째 자리의 숫자 8이 반올림되어 소수점 6번째 자리의 숫자 7에 +1이 된 결과입니다.
소수점 자리에 지정이 없다면 기본적으로 6째 자리까지만 출력되므로 9는 고려되지 않습니다.
[3]
지수 표현은 일반 실수에서 * 또는 /가, + 또는 -로 변형된 형태로 표기됩니다.
(실수)e(* → + 또는 / → -)(10의 승수)
예를 들어, 123.45 를 진수부가 한자리인 수로 표현하기 위해서는 나누기 100을 하면 되니 아래와 같이 표현할 수 있습니다. (진수부 : 실수에서 . 왼쪽부분, 즉 정수부분을 말합니다.)
123.45/100*100
= 1.2345*10^2
이것을 지수표현으로 바꾸게 되면,
1.2345e+2 가 되죠.
(10^2 는 10의 2승을 의미합니다. 10x10으로 100이죠. 3승이면 10x10x10=1000)
(문자 'e'는 해당 수가 '지수'라는 것을 의미합니다.)
0.00123을 진수부 한자리인 수로 표현하기 위해서는 곱하기 1000을 하면 되니 아래와 같이 표현이 가능합니다.
0.00123*1000/1000
=1.23/10^3
이것을 지수표현으로 바꾸게 되면,
1.23e-3 이 되죠.
해당 문제는 위와 같은 방식으로 풀어보시면 됩니다.
123456789.0e-5는 풀어보면 아래와 같은 수가 됩니다.
123456789.0/10^5 = 1234.56789
이것을 지수부 한 개만 남겨두면
1.23456789*10^3
지수로 고쳐쓰면
1.23456789e+3
여기서 문제는 C에서 별다른 서식지정자를 쓰지 않으면 실수는 소수점 7번째 자리에서 반올림된 6자리만 출력된다는 것입니다. 이것은 지수표현 또한 마찬가지 입니다. 소수점 7번째 자리인 8에서 반올림 하면 6번째 자리인 7이 1 증가하여 8이 됩니다. 수로 표현하게 되면 1.234568e+3이 되는 것이죠.
행복한 하루되세요 :)