안녕하세요 길벗수험서 운영팀입니다.
음.. 드리는 답변이 영상보다 도움이 될 수 있을지 자신이 없네요ㅠ
먼저 지수 표현에 대해 아셔야 합니다.
지수 표현은 일반 실수에서 * 또는 /가, + 또는 -로 변형된 형태로 표기됩니다.
(실수)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 이 되죠.
이에 따라 float a = 123456789.0e-5f; 를 %f로 출력하면 1234.567890으로 표시되어야 하는데, 총 6칸에 소수점 자리를 한 개로 제한했으니 1234.5가 나오게 됩니다. 여기서 소수점 자리 제한 시 두 번째 자리에서 반올림이 수행되어 1234.6이 출력되게 됩니다.
%e는 지수 출력으로 컴퓨터에서 지수를 출력하면 정수 부분을 1자리, 소수 부분 6자리, 지수 부분 2자리로 출력합니다.
이를 위해 변환하면 1.23456789*1000 => 1.23456789e+3이 되고, C, Java에서는 소수 관련 서식이 지정되지 않으면 소수점 6째 자리까지만 출력하기 때문에 7째 자리에서 반올림하여 1.234568e+3이 됩니다.
위에서 지수부는 2자리로 표시한다고 하였으므로 e+03으로 표현하여 1.234568e+03으로 출력이 되는 것입니다.
행복한 하루되세요 :)
-
관리자2021-03-23 10:04:56
안녕하세요 길벗수험서 운영팀입니다.
음.. 드리는 답변이 영상보다 도움이 될 수 있을지 자신이 없네요ㅠ
먼저 지수 표현에 대해 아셔야 합니다.
지수 표현은 일반 실수에서 * 또는 /가, + 또는 -로 변형된 형태로 표기됩니다.
(실수)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 이 되죠.
이에 따라 float a = 123456789.0e-5f; 를 %f로 출력하면 1234.567890으로 표시되어야 하는데, 총 6칸에 소수점 자리를 한 개로 제한했으니 1234.5가 나오게 됩니다. 여기서 소수점 자리 제한 시 두 번째 자리에서 반올림이 수행되어 1234.6이 출력되게 됩니다.
%e는 지수 출력으로 컴퓨터에서 지수를 출력하면 정수 부분을 1자리, 소수 부분 6자리, 지수 부분 2자리로 출력합니다.
이를 위해 변환하면 1.23456789*1000 => 1.23456789e+3이 되고, C, Java에서는 소수 관련 서식이 지정되지 않으면 소수점 6째 자리까지만 출력하기 때문에 7째 자리에서 반올림하여 1.234568e+3이 됩니다.
위에서 지수부는 2자리로 표시한다고 하였으므로 e+03으로 표현하여 1.234568e+03으로 출력이 되는 것입니다.
행복한 하루되세요 :)