float a 부터 이해가 잘 안됩니다... 여기 글써진 답변봐도
최대한 풀어서 해설부탁드립니다.
부동소수점이 무엇인지 가수부 소수부 등등..
안녕하세요.
float a = 123456789.0e-5f;
printf("소수점a = %6.1f 지수형a = %e\n", a, a);
[%6.1f 로 출력하면]
123456789.0e-5f 에 의해 지수형태로 저장된 a의 값을 원래대로 변경하면 소수점 위치를 왼쪽으로 5칸 이동한 값인
1234.56789가 됩니다.
e-5 이므로 소수점의 원래 위치가 왼쪽으로 5칸 이동한 값입니다.
이 값을 6.1f로 출력하면
소수점을 포함하여 6자리를 확보하여 → ______
소수점 1자리를 출력해야 하므로 → ____.6 이 됩니다.
소수점을 첫 째자리까지 출력할 때 이후 값이 있으면 반올림이 됩니다.
그러므로 둘째 자리에서 반올림이 되어 .6이 출력됩니다.
나머지 소수점 앞의 4자리에 → ____.6
정수 부분을 출력합니다. → 1234.6
만일 출력할 정수 부분보다 확보된 자리수가 적으면 정수는 모두 출력됩니다.
[%e로 출력하면]
123456789.0e-5f 에 의해 지수형태로 저장된 a의 값을 원래대로 변경하면 소수점 위치를 왼쪽으로 5칸 이동한 값인
1234.56789가 됩니다.
소수점 자리수가 지정되지 않으면 %f나 %e는 모두 기본적으로 소수점 6자리로 출력합니다.
또한 %e는 정수 부분을 1자리만 출력하므로 → 1.______ 이 되어 1.234568 이 됩니다.
역시 소수점 여섯 번째자리는 이후 값이 있으므로 일곱 번째 자리에서 반올림 된 것입니다.
%e는 지수 형식이므로 정수 부분을 1자리만 출력하기 위해 소수점의 위치를 강제로 이동시켰으므로 원래의 소수점 위치를 알려줘야합니다.
1.234568은 원래의 값 1234.56789에서 소수점 위치가 왼쪽으로 3자리 이동했으므로 e+03이 되어
1.234568e+03으로 출력이 되는 것입니다.
부동 소수점 표현 방식은 필기 교재 내용이 있어 관련 내용을 스크랩했으니 이점 양해바랍니다.
오늘도 즐거운 하루 되세요.
-
*2017-04-07 10:52:51
안녕하세요.
float a = 123456789.0e-5f;
printf("소수점a = %6.1f 지수형a = %e\n", a, a);
[%6.1f 로 출력하면]
123456789.0e-5f 에 의해 지수형태로 저장된 a의 값을 원래대로 변경하면 소수점 위치를 왼쪽으로 5칸 이동한 값인
1234.56789가 됩니다.
e-5 이므로 소수점의 원래 위치가 왼쪽으로 5칸 이동한 값입니다.
이 값을 6.1f로 출력하면
소수점을 포함하여 6자리를 확보하여 → ______
소수점 1자리를 출력해야 하므로 → ____.6 이 됩니다.
소수점을 첫 째자리까지 출력할 때 이후 값이 있으면 반올림이 됩니다.
그러므로 둘째 자리에서 반올림이 되어 .6이 출력됩니다.
나머지 소수점 앞의 4자리에 → ____.6
정수 부분을 출력합니다. → 1234.6
만일 출력할 정수 부분보다 확보된 자리수가 적으면 정수는 모두 출력됩니다.
[%e로 출력하면]
123456789.0e-5f 에 의해 지수형태로 저장된 a의 값을 원래대로 변경하면 소수점 위치를 왼쪽으로 5칸 이동한 값인
1234.56789가 됩니다.
소수점 자리수가 지정되지 않으면 %f나 %e는 모두 기본적으로 소수점 6자리로 출력합니다.
또한 %e는 정수 부분을 1자리만 출력하므로 → 1.______ 이 되어 1.234568 이 됩니다.
역시 소수점 여섯 번째자리는 이후 값이 있으므로 일곱 번째 자리에서 반올림 된 것입니다.
%e는 지수 형식이므로 정수 부분을 1자리만 출력하기 위해 소수점의 위치를 강제로 이동시켰으므로 원래의 소수점 위치를 알려줘야합니다.
1.234568은 원래의 값 1234.56789에서 소수점 위치가 왼쪽으로 3자리 이동했으므로 e+03이 되어
1.234568e+03으로 출력이 되는 것입니다.
부동 소수점 표현 방식은 필기 교재 내용이 있어 관련 내용을 스크랩했으니 이점 양해바랍니다.
오늘도 즐거운 하루 되세요.