p63 5번문제에서
변수 a를 123456789.0e-5f를 주고
%6.1f였을때 6자리를 확보하고 실수로 나타내고 소수점 첫째자리만 나타냈을때
1234.5가 아니고 왜 1234.6인지 모르겠고
%e\n일때
1.23456789e+03이 아니라 1.234568e+03인지 궁금하고
p110 8번 문제에서
변수 123456789.0e-5f를 주고
%f일때 실수로 나타내면
1234.56789가 아니라 왜 1234.567871인지 모르겠고
%e/n일때
1.23456789e+03이 아니라 1.234568e+03이 되는지 궁금합니다
안녕하세요.
1)
float a = 123456789.0e-5f;
printf("소수점a = %6.1f 지수형a = %e\n", a, a);
123456789.0e-5f 에 의해 지수형태로 저장된 a의 값을 원래대로 변경하면 소수점 위치를 왼쪽으로 5칸 이동한 값인
1234.56789가 됩니다.
이 값을 6.1f로 출력하면
______ 소수점을 포함하여 6자리를 확보하여 소수점 1자리를 출력해야 하므로
____.6 이 됩니다. 소수점 첫 째자리까지 출력해야 하는데, 둘째 자리에서 반올림이 되어 .6이 출력되었습니다.
나머지 4자리에 정수 부분을 출력합니다. 만일 출력할 정수 부분보다 확보된 자리수가 적으면 정수는 모두 출력됩니다.
1234.6이 출력됩니다.
%e로 출력하면
소수점 자리수가 지정되지 않으면 f나 e는 모두 기본적으로 소수점 6자리로 출력합니다.
e는 정수 부분을 1자리만 출력하므로
1.234568 이 됩니다. 역시 소수점 마지막 6자리는 7째 자리에서 반올림 된 것이고
1.234568 은 원래의 값 1234.56789에서 소수점 위치가 왼쪽으로 3자리 이동했으므로 e+03이 되어
1.234568e+03으로 출력이 되는 것입니다.
2)
float a = 123456789.0e-5f;
%f, %e와 같이 소수점 자리수가 없는 경우에는 기본적으로 소수점 자리수가 6자리가 표시됩니다.
그러므로
%f로 출력하면
1234.567890으로 표시되어야 하는데, 지수를 실수로 표현할 때 부족한 자리수 변환 시 정규화 과정의 오차로 인해 예상과 다른
값이 표시됩니다. 이로 인해 예상과 다른 결과가 표시되도록 자리수가 부족한 표현은 시험에 출제되지 않을 것으로 예상됩니다.
그러니 적용 원리에 맞는 형태만 파악해 두세요.
%e로 출력하면
소수점 자리수가 지정되지 않으면 f나 e는 모두 기본적으로 소수점 6자리로 출력합니다.
e는 정수 부분을 1자리만 출력하므로
1.234568 이 됩니다. 역시 소수점 마지막 6자리는 7째 자리에서 반올림 된 것이고
1.234568 은 원래의 값 1234.56789에서 소수점 위치가 왼쪽으로 3자리 이동했으므로 e+03이 되어
1.234568e+03으로 출력이 되는 것입니다.
오늘도 즐거운 하루 되세요.
-
*2018-05-14 09:27:14
안녕하세요.
1)
float a = 123456789.0e-5f;
printf("소수점a = %6.1f 지수형a = %e\n", a, a);
123456789.0e-5f 에 의해 지수형태로 저장된 a의 값을 원래대로 변경하면 소수점 위치를 왼쪽으로 5칸 이동한 값인
1234.56789가 됩니다.
이 값을 6.1f로 출력하면
______ 소수점을 포함하여 6자리를 확보하여 소수점 1자리를 출력해야 하므로
____.6 이 됩니다. 소수점 첫 째자리까지 출력해야 하는데, 둘째 자리에서 반올림이 되어 .6이 출력되었습니다.
나머지 4자리에 정수 부분을 출력합니다. 만일 출력할 정수 부분보다 확보된 자리수가 적으면 정수는 모두 출력됩니다.
1234.6이 출력됩니다.
%e로 출력하면
소수점 자리수가 지정되지 않으면 f나 e는 모두 기본적으로 소수점 6자리로 출력합니다.
e는 정수 부분을 1자리만 출력하므로
1.234568 이 됩니다. 역시 소수점 마지막 6자리는 7째 자리에서 반올림 된 것이고
1.234568 은 원래의 값 1234.56789에서 소수점 위치가 왼쪽으로 3자리 이동했으므로 e+03이 되어
1.234568e+03으로 출력이 되는 것입니다.
2)
float a = 123456789.0e-5f;
%f, %e와 같이 소수점 자리수가 없는 경우에는 기본적으로 소수점 자리수가 6자리가 표시됩니다.
그러므로
%f로 출력하면
1234.567890으로 표시되어야 하는데, 지수를 실수로 표현할 때 부족한 자리수 변환 시 정규화 과정의 오차로 인해 예상과 다른
값이 표시됩니다. 이로 인해 예상과 다른 결과가 표시되도록 자리수가 부족한 표현은 시험에 출제되지 않을 것으로 예상됩니다.
그러니 적용 원리에 맞는 형태만 파악해 두세요.
%e로 출력하면
소수점 자리수가 지정되지 않으면 f나 e는 모두 기본적으로 소수점 6자리로 출력합니다.
e는 정수 부분을 1자리만 출력하므로
1.234568 이 됩니다. 역시 소수점 마지막 6자리는 7째 자리에서 반올림 된 것이고
1.234568 은 원래의 값 1234.56789에서 소수점 위치가 왼쪽으로 3자리 이동했으므로 e+03이 되어
1.234568e+03으로 출력이 되는 것입니다.
오늘도 즐거운 하루 되세요.