Q&A

  • 함수오류...
실수형태의 함수를 정수형태로 변환해주는 함수에 오류가 있는듯 해서 문의드립니다...
오늘 발견한것까지 벌써 두개째인데요 해결방안좀 부탁드립니다...
델파이를 믿고서 프로그램을 구성하고 있는데 어처구니 없는 실수가 있는듯 해서...

첫째.. round함수 오류..
결과값이 82.5233이라는 수치가 나올때 즉 소수이하 첫자리가 5가 나오면 반올림이 되어야 함에도 반올림이 되지 않습니다... 즉 round(82.5233)이라면 결과값은 83이 아닌 82가 나옵니다...

둘째.. trunc함수 오류..
변수값이 5.1인경우 해당 변수에 10을 곱해서 정수로 만들고자 하여 trunc(변수*10)을 했더만 51이 나오는게 아니고 50이라는 수치가 나오더라구요...
그래서 trunc대신에 round를 사용했드만 그때는 정상적으로 51이 나옵니다...

워찌하여 이런일이 있는쥐...
어떻게 해결방안이 없을까요??
delphi 6 공부중에 발생한 사항입니다요...^^;;
수치에 좀 민감한 부분이라 해결방법이 꼭 필요하다는...

고수님들의 도움을 부탁드립니다...
2  COMMENTS
  • Profile
    장덕곤 2005.12.08 08:47
    round함수는 Banker's Rounding 라는 걸 쓰기때문에

    반올림할때 5의 경우 앞의 수가 짝수이면 버리고 홀수이면 올리는 방법을 사용합니다.

    정확하게 사용하실려면 0.5를 더하시고 버림하시면 될거같습니다..
    아마 trunc도 같은 맥락이아닐까하는..ㅡ,,ㅡ;;


  • Profile
    이중철 2005.12.08 19:46
    답변자가 이야기 하는 Banker's Ronding 쓰는 것 맞습니다.
    그리고 추가로 결코 82.5233 이라는 숫자를 반올림 할때 82가 나오지 않습니다.
    82.5 일때나 아니면 정밀도를 넘어서는 숫자 82.5000000000000023 이런식의 숫자일때에나
    82가 나옵니다.
    그리고 Trunc라는 함수를 너무 과신 하지 마세요 사람이 인식하는 계산과 틀린 일을 자주하여
    배신을 많이 합니다.
    5.1 X 10 = 51 나오고 Trunc하면 51이 나와야 정상이지만..
    컴에서 50이 나왔다 함은 다음과 같은 경우 입니다.
    5.1 X 10 = 50.99999999999999999999999889 이런식으로 저장(실제적으로 51이지만)이 되어있고
    Trunc하니 50이 되는 거죠
    이 문제는 거의 모든언어(VC, Delphi, 하물며 DB까지 oracle, Ms-sql...)가 다 있고 거의 문제점은
    똑 같습니다.

    이런식으로 사람이 알고 있는 계산과 컴이 계산하는 틀린것은 많습니다.


    • 테니스
    • 2005.12.08 17:59
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 이승근
    • 2005.12.08 06:50
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 장덕곤
      2005.12.08 08:47
      round함수는 Banker's Rounding 라는 걸 쓰기때문에 반올림할때 5의 경우 앞의 수가 짝수이면 버리고 홀...
    • 이중철
      2005.12.08 19:46
      답변자가 이야기 하는 Banker's Ronding 쓰는 것 맞습니다. 그리고 추가로 결코 82.5233 이라는 숫자를 반...
    • 정원혁
    • 2005.12.08 06:06
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 채팅
      2005.12.08 16:40
      델파이에 포함된 인터베이스는 5유저라이센스인 것으로 기억하고 있습니다. Firebird를 사용하는 것이 ...
    • 윤황현
    • 2005.12.08 03:23
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2005.12.09 04:03
      안녕하세요. 최용일입니다. http://user.chol.com/%7Evvad152e/indexk.htm vvad152e@chollian.net ...
    • 강남길
    • 2005.12.08 00:54
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 장덕곤
      2005.12.08 05:20
      object Inspector 에 sql 부분에서 select 날짜 from table1 order by 날짜 desc 하시면 가장 최근에...
    • 강남길
      2005.12.09 20:02
      장덕곤님 답변 잘보았읍니다. 감사드리구요 답변주신대로  TQuery 에 object Inspector 에 sq...
    • 김영대
    • 2005.12.08 00:18
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 김영대
      2005.12.13 20:30
      SQL문 중에 replace가 있더군요. update 테이블 set 필드명 = replace(필드명, 원본문자열, 바꿀문자열...
    • 최용일
      2005.12.09 03:56
      안녕하세요. 최용일입니다. 제가 DB쪽은 전혀 모르지만... Select한 결과값을 에디팅할 수 있다는 이야...
    • 김영대
      2005.12.10 01:13
      답변 감사합니다...^^ 다시 한번 SQL 공부를 해야할거 같습니다..ㅠㅠ 에구...SQL이 왜 이리 나의 길...
    • 이승근
    • 2005.12.07 21:22
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 이경원
    • 2005.12.07 18:55
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 장덕곤
      2005.12.07 22:38
      procedure TForm_2001.StringGrid1DblClick(Sender: TObject); begin   SHOWMESSAGE(IntToStr(...
    • 정경철
    • 2005.12.07 03:46
    • 4 COMMENTS
    • /
    • 0 LIKES
    • TeamB
      2005.12.07 04:51
      흠...정보가 부족합니다. 하다못해 문법오류가 나는 쿼리문으라도.... 동적쿼리인가요? 해당 쿼리를 ...
    • 정경철
      2005.12.07 19:20
      동적 쿼리 문입니다... 그런데 똑같은 조건으로 검색을 하면 될때는 잘 되는데 안될때는 계속 쿼리 문법...
    • TeamB
      2005.12.08 20:29
      흠, 일단 동적쿼리 라면...쿼리가 제대로 만들어지는지 확인을 해보셔야겟군요. 에러가 날때의 전체쿼리...
    • 정경철
      2005.12.17 01:26
      현재까지 추정 한 바로는 쿼리 문법 오류가 아니고 테이블을 연결 후 얼마동안 사용을 안하면 연결이 끈...
    • 이경원
    • 2005.12.07 02:39
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2005.12.07 06:04
      안녕하세요. 최용일입니다. 델파이 2005는 사용해본적이 없어서 맞을지는 모르겠지만... 저 에러는 ...
    • 신철우
    • 2005.12.06 22:59
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2005.12.06 23:07
      안녕하세요. 최용일입니다. 컨트롤들은 Parent의 영역에서만 보입니다. Parent를 설정하세요... sz_m...
    • 최용일
      2005.12.06 21:55
      안녕하세요. 최용일입니다. 굳이 Int64의 범위가 필요할런지 의문이네요... Int64의 범위를 가지면 ...
    • 임형준
      2005.12.06 22:10
      일반적으로는 필요하지 않지만 제가 만드는 프로그램이 비상식적으로 큰 데이터를 다루는 프로그램입니...
    • 강두헌
      2005.12.09 11:38
      중간에 껴들어서 죄송.. 제가 보기엔 최용일님 답변을 오해하신 부분이 있는거 같아서요. 스크롤바는 ...
    • 최용일
      2005.12.07 16:52
      안녕하세요... Int64범위의 비상식적인 데이터라고해서 갑자기 떠오르는건데요... 데이터크기가 10바...
    • 최용일
      2005.12.06 22:41
      안녕하세요. 최용일입니다. 필요하다는데야 제가 더이상 뭐라 말할 입장은 아니네요... 스크롤바는 ...
    • 임형준
      2005.12.06 23:57
      바쁘실텐데 답변 주셔서 정말 감사합니다.^^;; 근데 저위에서 '스크롤바와 연동하는 컨트롤들'은 무엇을...
    • 최용일
      2005.12.07 00:20
      안녕하세요. 최용일입니다. 상속이나 그런것과는 상관이 없구요... 스크롤바는 혼자서 사용되는 경우...
    • 이종민
    • 2005.12.06 21:11
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 돌고래
      2005.12.08 08:06
      form property에 보면 screen center이 있습니다.....즐코!!!
    • sallyslaw
      2005.12.07 02:58
      폼 property 의 포지션을 설정하는 방법 또는 스크린 값을 가져와서 중앙 계산 하는 방법 또는...여러가지 ...
    • 신철우
    • 2005.12.06 17:55
    • 3 COMMENTS
    • /
    • 0 LIKES
    • Marek
      2005.12.06 19:08
      Marek입니다. 당연 가능하죠 var sz_map : array[1..100] of array[1..2] of integer; 또는 va...
    • 신철우
      2005.12.06 20:18
      감사합니다. 2차원배열 4개를 넣고 아래와 같이 하면 에러가 나네요. 왜 그럴까요? SetLength(sz_map,...
    • 이중철
      2005.12.07 00:23
      델파이에 이미 있는 TPoint 레코드 타입을 사용하세요 var sz_map : array[1..100] of  TPoin...
    • 정지호
    • 2005.12.06 03:38
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2005.12.06 20:17
      안녕하세요. 최용일입니다. 음... 아무래도 리소스파일을 실행파일에 링크안하신듯... 메인폼소스 보...
    • 정원혁
    • 2005.12.06 03:07
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 이경원
    • 2005.12.06 01:30
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 우소
      2005.12.07 02:05
      이전 버전 소스가 2005로 컴파일이 가능 하면 문제가 없을것 같군요. 일반 프로젝트 처럼 열면 오른쪽...
    • 이희진
      2005.12.06 03:01
      SND_LOOP -> SND_ASYNC or SND_LOOP
    • 임정미
      2005.12.06 19:30