문제6번
float a=123456789.0e-5f
printf("a=%6.1f 지수형 a=%e\n".a,a)
인데요
답이 1234.6 그리고 1.234568e+03이 나왔습니다(여기에서는 왜또 7과 9가 빠졌는지...)
여기서 0e-5f의 뜻과 %6.1f의 뜻도 알려주시고 (6자리를 만들고 소수점 1한자리를 만들라는 얘기 같은데 왜 1234.5가아닌 1234.6이 되는지 궁금합니다)
밑줄친 지수형 a=%e\n 부분도 해석해주시면 감사하겠습니다
안녕하세요. 길벗 수험서 운영팀입니다.
이해를 위해 답변의 순서가 바뀌었습니다.
1. 0e-5f의 뜻
[답변]
먼저 마지막에 붙어있는 f는 앞의 숫자 값이 float 자료형을 따른다는 의미입니다.
float 자료형 변수인 a에 들어가는 모든 숫자 값 마지막에는 f를 붙여줘야 합니다.
다음으로는 지수형태의 숫자에 대해 이해하실 필요가 있을 것 같습니다.
숫자 뒤에 ‘e-5’ 또는 ‘e+03’은 10^-5(10의 -5승) 또는 10^3(10의 3승)을 의미합니다. 이러한 형식의 문자가 숫자 뒤에 붙어 있는 경우 이를 곱해줘야 일반적으로 우리가 사용하는 숫자 값이 나옵니다.
지수형태로 되어있는 변수 a의 값 '123456789.0e-5'는 일반형태의 실수로 바꾸기 위해서는 아래와 같이 풀이됩니다.
123456789.0 × 10^-5(10의 -5승) = 123456789.0 × 0.00001 = 1234.56789
2. %6.1f의 뜻
[답변]
실수 변수 a의 값 1234.56789를 총 6자리를 확보하여 소수점과 소수점 이하 1자리를 출력하고 남은 4자리에 정수를 출력하라는 의미입니다. 즉, 1234.5를 의미하지만 소수점 자리를 제한하는 경우 그 다음 자리(6)에서 반올림되어 1234.6이 출력되게 됩니다.
3. 지수형 a=%e\n 부분
[답변]
%e는 지수형 실수를 출력하는 서식 문자열입니다.
실수가 지수형 변수에 저장될 때는 정수 부분을 한 자리로 하고 나머지는 소수점 이하로 저장되며, 출력할 때도 이를 그대로 출력하게 됩니다. 즉, 1234.56789를 정수 한 자리의 지수로 바꾸면 됩니다.
1234.56789 = 1.23456789 × 10^3(10의 3승) = 1.23456789e+3
여기에서 C언어 출력 시 소수점을 6자리까지 표기한다는 점(7자리에서 반올림), 그리고 지수부를 2자리로 표현한다는 점을 고려하려 다시 표기해보면 '1.234568e+03'이 됩니다.
행복한 하루되세요.^^
-
*2018-09-12 16:00:28
안녕하세요. 길벗 수험서 운영팀입니다.
이해를 위해 답변의 순서가 바뀌었습니다.
1. 0e-5f의 뜻
[답변]
먼저 마지막에 붙어있는 f는 앞의 숫자 값이 float 자료형을 따른다는 의미입니다.
float 자료형 변수인 a에 들어가는 모든 숫자 값 마지막에는 f를 붙여줘야 합니다.
다음으로는 지수형태의 숫자에 대해 이해하실 필요가 있을 것 같습니다.
숫자 뒤에 ‘e-5’ 또는 ‘e+03’은 10^-5(10의 -5승) 또는 10^3(10의 3승)을 의미합니다. 이러한 형식의 문자가 숫자 뒤에 붙어 있는 경우 이를 곱해줘야 일반적으로 우리가 사용하는 숫자 값이 나옵니다.
지수형태로 되어있는 변수 a의 값 '123456789.0e-5'는 일반형태의 실수로 바꾸기 위해서는 아래와 같이 풀이됩니다.
123456789.0 × 10^-5(10의 -5승) = 123456789.0 × 0.00001 = 1234.56789
2. %6.1f의 뜻
[답변]
실수 변수 a의 값 1234.56789를 총 6자리를 확보하여 소수점과 소수점 이하 1자리를 출력하고 남은 4자리에 정수를 출력하라는 의미입니다. 즉, 1234.5를 의미하지만 소수점 자리를 제한하는 경우 그 다음 자리(6)에서 반올림되어 1234.6이 출력되게 됩니다.
3. 지수형 a=%e\n 부분
[답변]
%e는 지수형 실수를 출력하는 서식 문자열입니다.
실수가 지수형 변수에 저장될 때는 정수 부분을 한 자리로 하고 나머지는 소수점 이하로 저장되며, 출력할 때도 이를 그대로 출력하게 됩니다. 즉, 1234.56789를 정수 한 자리의 지수로 바꾸면 됩니다.
1234.56789 = 1.23456789 × 10^3(10의 3승) = 1.23456789e+3
여기에서 C언어 출력 시 소수점을 6자리까지 표기한다는 점(7자리에서 반올림), 그리고 지수부를 2자리로 표현한다는 점을 고려하려 다시 표기해보면 '1.234568e+03'이 됩니다.
행복한 하루되세요.^^