C언어 서식문자 %e에 대해 궁금합니다(내공 30)

C언어 서식문자 %e에 대해 궁금합니다(내공 30)

작성일 2018.03.01댓글 1건
    게시물 수정 , 삭제는 로그인 필요

정보처리기사 공부하다 궁금한것이 생겨 질문드립니다
어떤 변수a에 실수1.123456789123456789가 저장되있고
이것을 printf("%e",a)로 출력했을때
E00앞에 숫자가 소수점이하 몇째까지 표현되나요??
그리고 그 이유는 무엇인지?(변수a의 자료형에 따라 다른지)?

문제집 문제에서 변수 1234.56789를
%e 형으로 프린터 했는데
답이 1.234568e+03 이었는데
왜 1.23456789e+03이 아닌지 궁금해서 질문드립니다


#c언어 서식문자 #c언어 printf 서식문자 #c언어 double 서식문자 #c언어 scanf 서식문자 #c언어 2진수 서식문자

profile_image 익명 작성일 -

좋은 질문입니다.

실무에서 이 문제로 겁나 고민 많이 하고, 버그 투성이가 되어 해결하려 엄청 노력하게 됩니다. 

C언어에서 floating point 연산에는 오류가 있습니다. 초창기부터 버그가 있어요.
그래서 0.1을 10회 덧셈 했을 때 1이 나오지 않는 버그 등이 알려진 것이죠.
%e로 출력을 했을때 나타나는 1.2345e+03 이런 표시를 출력한다고 해서 일반 유저들이 좋아하지도 않죠. 
0.0001 을 10000번 덧셈 하면 1 나와야 하는데 해보시면 컴파일러 마다 나오기도 하고 안나오기도 하고....
이 코드를 방금 Visual Studio 2015로 테스트 해봤는데 잘 되네요. 버그가 수정된거 같고요.
다른 컴파일러들은 어떨런지 확실하지 않으니 쓰지 않으시는게 좋습니다. 

그러니 %e 같은건 쓰지 마세요. 여러가지 C언어 컴파일러에서 다양한 증상들의 버그가 나옵니다.

펌웨어를 개발하는 경우 CPU에 소숫점이 있는 숫자 연산기능이 없으므로 라이브러리로 작성된 소스코드로 어렵게 개발을 진행하고 있습니다. 

또한 질문에서 유효숫자가 왜 1.234568로 나오는지 유효숫자에 대한 개념을 묻는데요. 이것도 컴파일러가 어떻게 출력을 할지 각기 다르고요.
게다가 double 형 변수를 선언해서 사용할때 연산 처리 속도가 무척 늦습니다.

소수점 2자리를 포함한 달러+센트 연산을 수행하고자 할때도, 그냥 곱하기 100으로 항상 가지고 다니다가 출력할때만 100으로 나누어 출력합니다.

예를 들어 12.33을 저장할때 int a = 1233으로 저장하는 것이죠. 그러면 소수점 유실이 생기지 않습니다.
그러다가 출력할때 printf("%d.%02d", a / 100, a %100); 이렇게 출력하면 오류 없이 정확한 출력이 됩니다.

그러니 변수나 database에 저장을 할때 소수점이 있는 데이타로 저장하시지 마시고 int 나 long int 형 데이타로 저장하는 것이 속도도 빠르고 데이타의 크기도 작습니다.

database 만 다루는 애들은  CPU가 갖는 연산오류 문제나 math co processor에 대한 기술적 개념이 없는지라 그냥 소수점 자리수 정해서 db 테이블 디자인을 해대는데 ... 안타깝죠.

그러니 소수점 이하 6자리를 꼭 취급해야 하는 업무라면 1000000을 곱해서 정수로 저장하면 정확한 저장이 가능하고, 출력할때도 앞서 설명과 같이 나누어 출력하시면 됩니다. 대부분 저장과 합산 처리에 시간을 많이 소요되고 출력은 마지막에 한번만 하면 되는겁니다.

화이팅하십시오~

로또3등당첨금 성공 가능성 높은 사이트...

... 팔봉동로또 이번주 로또번호 추천(내공100) 혹시 주변에서... 나눔로또에 대해궁금합니다 생곡동로또 로또5등. 통동로또 아미5기 로또쇼 응모하려고 하는데요... c언어 로또...

로또당첨조회 당첨 확률 큰 업체 소개 ??

... 로또에대해 궁금합니다 매노동로또번호 광탄로또번호... 알려주실분 내공드려요 이산면로또번호 효창동로또... 로또 문자 광고이죠?? 침산로또 C언어 반복문을 활용한 로또...

[내공50]사무자동화 기출문제 어디가면...

내공50 드립니다. 사무자동화 산업기사 기출문제를... 루트로부터 preorder 순으로 주어진 문자열에 대해 파스... 다음 중 C언어의 설명으로 잘못된 것은? 가. 항상 main( )...

[내공100]미술에 대해 궁금한게 많은...

... 있는지 궁금합니다. 그리고 그 분야/직업에 대한 설명을... p/s 미술에 대해 어느정도 해박하신분이 써주셨으면... 문자 디자이너 - 폰트 디자이너는 인쇄 매체 뿐 아니라 TV...

C언어 관련하여 여러 문제에 대하여...

... 문제지에 대해서 살펴보다가 90문제 가량의 문제가... => C++에서는 참조자 선언 문법이지만 C언어에서는... 용도로 %p라는 서식문자도 있긴 합니다. ② %e...

사무관리규정 기출문제 (내공100)

... 내공은 많이 드리고 싶은데 100까지밖에 없네요..... 루트로부터 preorder 순으로 주어진 문자열에 대해 파스... 다음 중 C언어의 설명으로 잘못된 것은? 가. 항상 main( )...