안녕하세요. 천리안 프로그래머포럼 C++Builder 담당자 임펠리테리입니다.
말씀하신게.. 저도 좀 이상해서, 좀 뒤적거려봤습니다. CurrToStr() 함수라면 당근
세자리마다 점을 찍어주게 설계를 했을텐데, 하고요.
원하시는 용도에 사용하는 함수는 따로 있더군요. CurrToStF() 함수입니다. 이 함수
는 주어진 포맷 형태에 따라서 문자열을 리턴해줍니다.
이 함수의 헬프가 잘못되어 있던데, 헬프에 나온것처럼 포맷의 타입은
TStringFloatFormat형이 아니라 TFloatFormat 형이더군요. 이넘은 sysutls.hpp에
선언되어 있는데, enum으로서 다음과 같이 선언되어 있더군요.
enum TFloatFormat { ffGeneral, ffExponent, ffFixed, ffNumber, ffCurrency };
하나하나 다 테스트를 해봤는데, 제너럴과 픽스드는 그냥 스트링으로 리턴하구요,
익스포넌트는 10의 몇승 형 있죠? 그걸로 리턴하고... 호롱님께서 원하시는 동작을
하는 포맷은 나머지 두가지, ffNumber와 ffCurrency입니다.
이 두가지의 차이는, ffCurrency를 쓰면, 이름답게! 통화단위, 즉 우리나라니까
원 기호(\)까지 붙여준다는거죠. 물론 앞에요.
마지막 인자인 digit는 소숫점 아래 자리수니까, 특별한 경우가 아니면 Currency형
에서 쓸일이 없겠죠.
그러니까.. 요약하면 다음과 같이 쓰면 됩니다.
(스트링값) = CurrToStrF((커런시값), ffNumber, 0);
그럼, 참고하시길...
독립문에서 임펠리테리였습니다.
(cbuilder, cbuilder@thrunet.com)
|