Delphi / BCB
2010.04.30 02:45

델파이 수학 반올림 방법

Lyn
조회 수 32908 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

델파이는 기본적으로 IEEE에 등록된 Banker's Rounding 을 사용한다.

자세한 이론은 제쳐두고 일단 이건 결과물을 무조건 짝수에 맞추는 방법이다


즉 11.5 - > 12, 12.5 -> 12 가 된다


그러나 수학연산할땐 이 방법을 잘 쓰진 않는데(사실 Banker's Rounding 이 오차가 작다....)

FPU 의 Control Bit를 바꿔 이를 수정할 수 있다


procedure TForm2.FormCreate(Sender: TObject);

var

  Val : Integer;

  Num : Extended;

Const

  MathRoundMode : Word = $1B32;

begin

  Num := 2.5;

  Set8087CW(MathRoundMode);

  Val := Round(Num);

  Set8087CW(Default8087CW);


  OutputDebugString(PChar(IntToStr(Val)));

end;


FPU의 설정을 바꾸는 것이기 때문에 특별한 경우가 아니라면 쓰고나서 돌려놓자!


Ps. 왠지모르게 변수대신 상수로 넣으면 안되더라 =_=;


?

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
13 Delphi / BCB 폴더 선택 다이얼로그 Lyn 2010.07.20 32815
» Delphi / BCB 델파이 수학 반올림 방법 Lyn 2010.04.30 32908
11 Delphi / BCB #pragma once Lyn 2010.02.01 30954
10 Delphi / BCB Delphi 2005~ 2009 IDE 를 Delphi7 스타일로 1 Lyn 2009.09.08 32427
9 Delphi / BCB C++ Builder 단독 실행파일 만들기 Lyn 2009.03.16 40230
8 Delphi / BCB SpeedButton 투명하게하기 Lyn 2008.09.19 40335
7 Delphi / BCB 폼을 그림 모양대로 잘라내기 Lyn 2008.09.19 40443
6 Delphi / BCB 재귀 호출을 이용한 폴더내의 파일 전부 검색하기 Lyn 2008.08.16 79123
5 Delphi / BCB 타이틀바가 없는 폼 이동하기. Lyn 2008.08.16 151368
4 Delphi / BCB PChar 과 ShortString 타입 서로 변경하는 방법. Lyn 2008.08.16 36081
3 Delphi / BCB Delphi 에서 메모리 릭 체크하는 방법 Lyn 2008.08.16 55074
2 Delphi / BCB 폼을 띄울때, 작업표시줄에 폼이 표시되게 하는 방법. Lyn 2008.08.16 38188
1 Delphi / BCB 많은 데이터를 다룰때 TStringList가 느린경우. Lyn 2008.08.16 53963
Board Pagination Prev 1 Next
/ 1