float a = 123456789.0e-5f
왜 %6.1f에서는 1234.6 으로 출력되고,
왜 %e 형태로 출력될 때는 1.234568e+03 으로 바뀌나요?
소수점 관련해서 이해가 거의 되지 않아 질문 남깁니다.
안녕하세요 길벗수험서 운영팀입니다.
먼저 지수 형태가 실수로 저장될 시 어떤 값으로 저장되는지 환산해보세요.
123456789.0e-5 -> 1234.56789 가 됩니다.
이것을 서식문자열 %6.1f를 적용해보세요.
6.1f는 6자리를 확보하여 소수점은 1자리수만 출력하라는 의미입니다.
소수점을 의미하는 '.' 또한 1자리를 차지하므로
1234.5가 출력되어야 하지만 소수점 둘째자리가 5이상이므로 반올림되어 1234.6이 출력되는 것입니다.
%e는 지수를 다시 한 번 언어 형식에 맞게 변환해주어야 합니다.
C나 Java에서는 지수를 출력 할 때, 정수부를 한 자리로 표현하고, 소수부는 6자리, 지수부는 2자리로 표현합니다.
즉, 1234.56789를 정수 한 자리 지수로 표현하기 위해서는
1.23456789e+3이 되고,
소수부 6자리라고 하였으니 7째 자리에서 반올림한,
1.234568e+3이 되고,
지수부 2자리라고 하였으니 0을 추가하여
1.234568e+03이 되는 것입니다.
행복한 하루되세요 :)
-
관리자2019-05-21 14:46:15
안녕하세요 길벗수험서 운영팀입니다.
먼저 지수 형태가 실수로 저장될 시 어떤 값으로 저장되는지 환산해보세요.
123456789.0e-5 -> 1234.56789 가 됩니다.
이것을 서식문자열 %6.1f를 적용해보세요.
6.1f는 6자리를 확보하여 소수점은 1자리수만 출력하라는 의미입니다.
소수점을 의미하는 '.' 또한 1자리를 차지하므로
1234.5가 출력되어야 하지만 소수점 둘째자리가 5이상이므로 반올림되어 1234.6이 출력되는 것입니다.
%e는 지수를 다시 한 번 언어 형식에 맞게 변환해주어야 합니다.
C나 Java에서는 지수를 출력 할 때, 정수부를 한 자리로 표현하고, 소수부는 6자리, 지수부는 2자리로 표현합니다.
즉, 1234.56789를 정수 한 자리 지수로 표현하기 위해서는
1.23456789e+3이 되고,
소수부 6자리라고 하였으니 7째 자리에서 반올림한,
1.234568e+3이 되고,
지수부 2자리라고 하였으니 0을 추가하여
1.234568e+03이 되는 것입니다.
행복한 하루되세요 :)