C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[35118] Re:Edit에서 입력받은 실수를 파일로 저장하려 하는데.........
sopark [] 1129 읽음    2004-05-20 14:39
실수를 저장할때 님처럼 %3.2f 하면 정수 3자리 소수 2자리 가 저장 되는게 아닙니다.
정수 3자리 소수 2자리 로 저장하려면 %6.2f 로 해야 됩니다.

앞에 6은 소수점을 포함한 전체 자리수.
뒤에 2는 소수 자리수 입니다.
따라서 전체 자리수 6 자리에서 소수 2 자리 빼면 남는 자리수는 4 자리
여기서 소수점 한자리 빼면 정수 자리수는 3 자리가 됩니다.
이렇게 해줘야 정수 자리가 차이 나더라도 파일 저장시 밀리는 현상이 없습니다.

그냥 sprintf(buff,"%6.2f", atof(Edit->Text.c_str()) 해서 저장하면 되겠네요.

궁금이 님이 쓰신 글 :
: Edit에서 입력받은 실수를 파일로 저장하려 하는데 파일로 저장은 되는데
: 파일에 위치를 지정해서 저장하려고 합니다.
: 실수를 %3.2f 형태로 정수쪽을 3자리 소수점 이하를2자리로 넣으려고 하는데
: 제가 지금 한방법은 밑에와 같이 그부분을 제거하고 Insert 시키는식으로 했거든요.
: 근데 앞자리 정수쪽이 3자리가 아니라 1자리나 2자리숫자로 즉(12.30)이런식으로 들어오면 뒤에 1,2자리가
: 점점 밀리더군요 지울때는 6자리를 지우고 Insert 할때는 4자리나 5자리로 들어오게 되니 1,2자리가 점점 밀리더군요..
: 저장할때 실수형 자리가 6자리가 안되도 6자리로 입력을 받고 넣어주려고 하는데요..
: 어떻게 할수 있죠 알려주세요..
:
:
:         AnsiString Buff;
:         AnsiString Auff;
:         a = StrToFloat(Fm_InputNumber->InputEdit->Text);
:         TStringList *SL = new TStringList;
:         SL->LoadFromFile("data\\data.txt");
:         Buff = SL->Strings[15];  //15번째줄 불러오기
:         Buff.Delete(23,6);       //23번째 자리에서 6칸 지우기
:         Auff=Buff.CurrToStrF(a,ffFixed,2);  //소수점 이하2자리 표시
:         Lbl_TemporaryTestTime->Caption=Auff;
:         Buff.Insert(Auff,23);     //23번째 자리에 넣기
:         SL->Strings[15] = Buff;
:         SL->SaveToFile("data\\data.txt");
:         delete SL;

+ -

관련 글 리스트
35108 Edit에서 입력받은 실수를 파일로 저장하려 하는데......... 궁금이 916 2004/05/20
35118     Re:Edit에서 입력받은 실수를 파일로 저장하려 하는데......... sopark 1129 2004/05/20
35124         헉! 그런가요 감사..........(냉무) 궁금이 689 2004/05/20
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.