|
이런 방법도 있습니다.
float v = -13.23423453254235;
Form1->Aclr10m11H_MainApaEdt->Text = FormatFloat("##0.00", v);
최남영 님이 쓰신 글 :
: 안녕하세요
: 먼저 감사하다는 말씀을 ~~
: 4시간의 고민이 해결되었네요^^
: 감사합니다.
:
: 김태선 님이 쓰신 글 :
: : 일단 float는 정밀도에 문제가 있기 때문에
: : 특정 자리 밑으로 깔끔하게 끊어 내는게 잘 안됩니다.
: : 그래서 정밀도가 높고 특정 자리 밑으로 깔금하게 끊어지는 double 로 변환한뒤 자리수 밑으로 끊어내는게 좋습니다.
: : 방법은 여러가지가 있을 수 있는데
: : 한가지 예로 아래처럼 처리하시면 쉽게 됩니다.
: :
: : float v = -13.23423453254235;
: : Form1->Aclr10m11H_MainApaEdt->Text = (int)((double)v * 100) / 100.0;
: :
: : 위 방법은 절사 방법이고
: : 만일 잘라나가는 자리에서 반올림을 해야 하면
: : String의 printf 메소드로 %3.2f 로 하면 깔끔하게 됩니다.
: : 이럴때는 double 로 변환할 필요도 없기 때문에 가장 쉬운 방법이 되겠습니다.
: :
: : float v = -13.23423453254235;
: : Form1->Aclr10m11H_MainApaEdt->Text = String().sprintf("%3.2f", v);
: :
: :
: : 최남영 님이 쓰신 글 :
: : : 안녕하세요
: : : 통신으로 입력받은 아스키값을 FLOAT형으로 변환하여 EDIT창에 표시한는데 소수점 15자리까지 표시되네요
: : : 이것을 소수점 2자리까지 표시하고 싶은데 ..도저히 모르겠어요 중간에 sprintf를 사용해서 %3.2f로 스트링 변환해서도 해봤지만
: : : 안됩니다. 아마도 edit 창의 limit 옵션 설정이 있는것 같은데요.. MaxLength가 있긴 한데 이것은 키보드로 직접 입력시에만 제한이 되네요
: : : 방법 아시는분 도움 부탁드립니다.
: : :
: : :
: : :
: : : Aclr10M_Low=(atof( pBuffer ));
: : : Form1->Aclr10m11H_MainApaEdt->Text=Aclr10M_Low;
: : :
: : : 결과: -13.23423453254235
: : : 원하는값: -13.23
|