Q&A
HOME
Tips & Tech
Q&A
Discuss
Download
자유게시판
홍보 / 광고
구인 / 구직
LOGIN
회원가입
잘못알고 있는건가 ?
procedure TForm1.Button1Click(Sender: TObject);
begin
label1.Caption := INTTOSTR(ROUND(16.5));
end;
이렇게 하면 16이 나옵니다.
17이 나와야 하는게 아닌가요 ?
(내가 잘못알고 있는건가...T.T)
4
COMMENTS
강인규
•
2001.12.06 20:22
저두 자세한 내부적인 처리방법은 잘 모릅니다만...-_-;
ROUND는 우리가 산수시간에 배웠던 반올림과는 좀 다릅니다.
끝자리가 짝수로 끝날 경우엔 .5를 버림하고 홀수로 끝날경우에는 .5를 올림합니다.
반올림 알고리즘을 구현하기 위해서는 별도의 함수 구현이 필요합니다.
//델마당에서 이재원님이 올리신 팁입니다.
Function TForm1.Rnd(aReal : Double):Integer;
Const
RndUpCW : Word = $1B32;
var
CurCW: Word;
begin
CurCW := Default8087CW;
Try
Set8087CW(RndUpCW);
Result:=Round(aReal);
Finally
Set8087CW(CurCW);
End;
End;
P.S.
전 군대에서 포병 사격계산병이었는데 탄도계산할때 이런 알고리즘을 사용합니다.
그때는 4사6입이라고 불렀는데 그게 정확한 명칭인지는 모르겠네요..-_-;;
탄도 계산 시 오차를 줄이기 위한 방법이라고 하더군요..
지금 문서를 찾아보니 이런 방법을 banker's Rounding이라고도 부르는군요..
즐프하세요~ ^-^/
나두초보 wrote:
> procedure TForm1.Button1Click(Sender: TObject);
> begin
> label1.Caption := INTTOSTR(ROUND(16.5));
> end;
>
> 이렇게 하면 16이 나옵니다.
>
> 17이 나와야 하는게 아닌가요 ?
>
> (내가 잘못알고 있는건가...T.T)
0
0
삭제
수정
댓글
우이씨
•
2001.12.06 19:33
> procedure TForm1.Button1Click(Sender: TObject);
> begin
> label1.Caption := INTTOSTR(ROUND(16.5));
> end;
>
> 이렇게 하면 16이 나옵니다.
>
> 17이 나와야 하는게 아닌가요 ?
>
> (내가 잘못알고 있는건가...T.T)
label1.Caption := INTTOSTR(ROUND(16.49)); ==> 결과 16
label1.Caption := INTTOSTR(ROUND(16.5)); ==> 결과 16
label1.Caption := INTTOSTR(ROUND(16.51)); ==> 결과 17
label1.Caption := INTTOSTR(ROUND(16.52)); ==> 결과 17
저두 round함수가 정수로 소수첫째자리 반올림을 한다고 배웠는데..
이러네요.. 먼가 시원한 답변이 필요한거 같습니다.. ^^..
0
0
삭제
수정
댓글
구창민
•
2001.12.06 09:52
나두초보 wrote:
> procedure TForm1.Button1Click(Sender: TObject);
> begin
> label1.Caption := INTTOSTR(ROUND(16.5));
> end;
>
> 이렇게 하면 16이 나옵니다.
>
> 17이 나와야 하는게 아닌가요 ?
>
> (내가 잘못알고 있는건가...T.T)
Label1.Caption := Trunc(16.5) + Trunc(Frac(16.5)*2);
0
0
삭제
수정
댓글
이경문
•
2001.12.06 13:29
구창민 wrote:
> 나두초보 wrote:
> > procedure TForm1.Button1Click(Sender: TObject);
> > begin
> > label1.Caption := INTTOSTR(ROUND(16.5));
> > end;
> >
> > 이렇게 하면 16이 나옵니다.
> >
> > 17이 나와야 하는게 아닌가요 ?
> >
> > (내가 잘못알고 있는건가...T.T)
>
>
>
> Label1.Caption := Trunc(16.5) + Trunc(Frac(16.5)*2);
Label1.Caption := IntToStr(Round(1.5 + .5));
반올림할 때는 0.5 더해서 Round하는 방법도 있지요 ^^
0
0
삭제
수정
댓글
(NOTICE) You must be
logged in
to comment on this post.
돌멩이
2001.12.06 21:25
0
COMMENTS
/
0
LIKES
ToolsAPI에 대해 힌트 좀 주세요!!
열심히
•
2001.12.06 21:14
2
COMMENTS
/
0
LIKES
움.. DB에서 읽어온 데이터를 메모컴포넌트에서 읽어오면 앞에 이상한 문자가 붙는데...
BLUE
•
2001.12.08 02:11
열심히 wrote: > Db에서요 내용을 읽어와서 메모컴포넌트에 넣으면요 > 검정색 네모 안에 동그라미가 있...
열심히
•
2001.12.06 21:19
열심히 wrote: > Db에서요 내용을 읽어와서 메모컴포넌트에 넣으면요 > 검정색 네모 안에 동그라미가 있...
나두초보
2001.12.06 21:01
0
COMMENTS
/
0
LIKES
Re: 동적생성이 무슨뜻이죠? (내용無)
죠스고기
•
2001.12.06 20:59
2
COMMENTS
/
0
LIKES
실행화일의 실제경로 찾는 법 ~~
최용일
•
2001.12.06 22:01
안녕하세요. 최용일입니다. ExtractFilePath는 파라매터로 넘어온 파일의 경로를 리턴하는 함수입니다. ...
ClickTest
•
2001.12.06 21:32
ShowMessage(ExtractFilePath(ParamStr(0))); 정확한지 모르겠네요... 테스트는 못해봤습니다.... 즐...
BLUE
•
2001.12.06 20:28
4
COMMENTS
/
0
LIKES
동적으로 생성한 스트링그리드의 명칭알기
최용일
•
2001.12.06 22:17
안녕하세요. 최용일입니다. 탭쉬트삭제가 쉽게 된다면 굳이 스트링그리드의 이름을 알필요는 없을거 같...
BLUE
•
2001.12.07 02:45
스트링 그리드를 새로 생성한 것의 DrawCellEvent를 적용시키기가 너무 어려워서 다시 질문을 드립니다. ...
최용일
•
2001.12.07 02:54
이해할수 없는 코딩이네요... 쩝~~~ 동적으로 생성하나 디자인타임시에 생성하나 스트링그리드를 커스터...
BLUE
•
2001.12.07 03:19
연결을 못해서 못하다니 정말 챙피하고 감사합니다.. tsg.OnDrawCell := TSGDrawCell; // TSGDrawC...
운풍
•
2001.12.06 20:20
1
COMMENTS
/
0
LIKES
디비그리드에서 소팅문제
Runo
•
2001.12.07 00:09
저도 초보지만 조금 아는 내용이라서 답변드립니다. 혹시 Primary Key로 잡힌 필드의 데이터 형식이 char...
돌쇠
2001.12.06 20:17
0
COMMENTS
/
0
LIKES
Access 에서 만든 MDB 필드 자리수가 이상해요
열심히
2001.12.06 20:06
0
COMMENTS
/
0
LIKES
크아 왜 F9(run) 이 아예 안먹나요...ㅜ.ㅜ
김승식
2001.12.06 19:51
0
COMMENTS
/
0
LIKES
퀵리포트 3.5버전 윈도우2000에서 문제 없나염..
이지인
2001.12.06 20:34
0
COMMENTS
/
0
LIKES
델파이서 이거도 가능해요??
천상천하
2001.12.06 19:31
0
COMMENTS
/
0
LIKES
동적생성에 관해 다시 질문드립니다. Test 소스포함..
김하늘
2001.12.06 18:05
0
COMMENTS
/
0
LIKES
델파이에서 사용할 수 있는 SQL컴포넌트는 어떤것들이 있는지?
초보
•
2001.12.06 09:09
2
COMMENTS
/
0
LIKES
알려주세요. 키보드 처리 방법...
구창민
•
2001.12.06 09:21
초보 wrote: > Enter키나 Down키는 KeyDown 이벤트에서 > Perform(WM_NEXTDLGCTL,0,0) 처리하면 > Tab키...
초보
•
2001.12.06 21:10
알려주셔서 고맙습니다. 복 많이 받으세요.
이호영
•
2001.12.06 08:56
1
COMMENTS
/
0
LIKES
델파이6 에서 ADO사용시 이상한 메세지가 ???
구창민
•
2001.12.06 09:25
이호영 wrote: > 델파이6 를 사용하여 ADO 를 사용한 예제를 연습하던중 아래와 같은 메시지를 > 만나게...
열심히
•
2001.12.06 08:11
2
COMMENTS
/
0
LIKES
크아 왜 db그리드에는 잘 나오는데 다른데는 안나오죠?
김병식
•
2001.12.06 21:55
==> I := 1; > while not query1.Eof do begin stringgr...
구창민
•
2001.12.06 09:31
Indicates the total number of records associated with the dataset. property RecordCount: Longint;...
이영민
2001.12.06 07:42
0
COMMENTS
/
0
LIKES
소스좀 봐주세요
깡다구
•
2001.12.06 07:23
1
COMMENTS
/
0
LIKES
파라독스에서 테이블두개만들수 ?와 이거깡다구로 밤새는군요...
만취상태
•
2001.12.06 10:30
하나의 디비에 두개의 테이블을 만들지 못하는 DBMS좀 알려 주세요. 함 써보게.ㅡㅡ;; 파라독스 사용...
나두초보
•
2001.12.06 07:22
4
COMMENTS
/
0
LIKES
잘못알고 있는건가 ?
procedure TForm1.Button1Click(Sender: TObject); begin label1.Caption := INTTOSTR(ROUND(16.5)); end; 이렇게 하면 16이 나옵니다. 17이 나와야 하는게 아닌가요 ? (내가 잘못알고 있는건가...T.T)
강인규
•
2001.12.06 20:22
저두 자세한 내부적인 처리방법은 잘 모릅니다만...-_-; ROUND는 우리가 산수시간에 배웠던 반올림과...
우이씨
•
2001.12.06 19:33
> procedure TForm1.Button1Click(Sender: TObject); > begin > label1.Caption := INTTOSTR(ROUND(1...
구창민
•
2001.12.06 09:52
나두초보 wrote: > procedure TForm1.Button1Click(Sender: TObject); > begin > label1.Caption :=...
이경문
•
2001.12.06 13:29
구창민 wrote: > 나두초보 wrote: > > procedure TForm1.Button1Click(Sender: TObject); > > begin > ...
초보아씨
•
2001.12.06 07:00
1
COMMENTS
/
0
LIKES
그룹바이 도움요청합니다.
ClickTest
•
2001.12.06 18:00
초보아씨 wrote: > 이렇게 코딩을하니 에러는 안나요 > 근데 제가 알고 싶은건 > 그룹바이로 금액을 누...
동동
•
2001.12.06 06:51
1
COMMENTS
/
0
LIKES
인터베이스에 접속하려고 하는데 자꾸 에러가...
똘망울
•
2001.12.06 21:43
이렇게 해보세요. DATABASE 설정은 SERVNAME:EMPLOYER.GDB 전이렇게 하는데 잘되네요. 동...
나두초보
2001/12/06 07:22
Views
181
Likes
0
Comments
4
Reports
0
Tag List
수정
삭제
목록으로
한델 로그인 하기
로그인 상태 유지
아직 회원이 아니세요? 가입하세요!
암호를 잊어버리셨나요?
저두 자세한 내부적인 처리방법은 잘 모릅니다만...-_-;
ROUND는 우리가 산수시간에 배웠던 반올림과는 좀 다릅니다.
끝자리가 짝수로 끝날 경우엔 .5를 버림하고 홀수로 끝날경우에는 .5를 올림합니다.
반올림 알고리즘을 구현하기 위해서는 별도의 함수 구현이 필요합니다.
//델마당에서 이재원님이 올리신 팁입니다.
Function TForm1.Rnd(aReal : Double):Integer;
Const
RndUpCW : Word = $1B32;
var
CurCW: Word;
begin
CurCW := Default8087CW;
Try
Set8087CW(RndUpCW);
Result:=Round(aReal);
Finally
Set8087CW(CurCW);
End;
End;
P.S.
전 군대에서 포병 사격계산병이었는데 탄도계산할때 이런 알고리즘을 사용합니다.
그때는 4사6입이라고 불렀는데 그게 정확한 명칭인지는 모르겠네요..-_-;;
탄도 계산 시 오차를 줄이기 위한 방법이라고 하더군요..
지금 문서를 찾아보니 이런 방법을 banker's Rounding이라고도 부르는군요..
즐프하세요~ ^-^/
나두초보 wrote:
> procedure TForm1.Button1Click(Sender: TObject);
> begin
> label1.Caption := INTTOSTR(ROUND(16.5));
> end;
>
> 이렇게 하면 16이 나옵니다.
>
> 17이 나와야 하는게 아닌가요 ?
>
> (내가 잘못알고 있는건가...T.T)