상담문의

ㆍ HOME > 상담문의 > 정보처리기사 실기
제 목 long과 double에서의 반올림이 헷갈립니당~ㅠㅠ
글쓴이  성지언작성일 2005-04-11조회수 687
글공유
게시글을 twitter로 보내기게시글을 facebook으로 보내기게시글을 Me2Day로 보내기게시글을 요즘으로 보내기

Option Explicit
Sub main()
    Dim 값(3) As Long
    Dim 합계 As Long
    값(1) = 20.5
    값(2) = 30.1
    값(3) = 40.1
    합계 = 값(1) + 값(2) + 값(3)
    MsgBox 합계
End Sub                                               이 프로그램에서는 합계 결과값이 90이 나옵니다



Option Explicit
Sub main()
    Dim 값(3) As Long
    Dim 합계 As Long
    값(1) = 20.6
    값(2) = 30.1
    값(3) = 40.1
    합계 = 값(1) + 값(2) + 값(3)
    MsgBox 합계
End Sub                                               이 프로그램에서는 합계 결과값이 91이 나옵니다



디버그해보니, 첫번째프로그램에선 값1이 20, 두번째프로그램에선 값1이 21로 읽히더군요 그래서 소수점이 .6부터 반올림이 된다고 생각했습니다~  그런데..



 



Option Explicit
Sub main()
    Dim 값(3) As Double
    Dim 합계 As Long
    값(1) = 20
    값(2) = 30.5
    값(3) = 40
    합계 = 값(1) + 값(2) + 값(3)
             값과 합계의 변수타입을 다르게 지정했을 때
    MsgBox 합계                                   이 프로그램에선 합계 값이 90이 나왔어여~

End Sub                                          



Option Explicit
Sub main()
    Dim 값(3) As Double
    Dim 합계 As Long
    값(1) = 20.1
    값(2) = 30.3
    값(3) = 40.1
    합계 = 값(1) + 값(2) + 값(3)
    MsgBox 합계
End Sub
                                        그런데  이프로그램에선 합계값이 91이 나왔습니다..



아무리 생각을 해봐두 이해가 안되서여.. 반올림이 .5에서 되는건지 .6에서 되는건지



원래 double형에서는 같은 90.5인 값이 왜 Long형으로 바뀌면서 다른 값을 나타내는지 설명해주세여~



질문이 넘 길어서 죄송해여~~^^;;

댓글쓰기 :
이전글 캐스트 버그입니다.(답변1)
다음글 문제가 안 풀려여..ㅠ.ㅠ
고객지원센터

02-556-3650

평일 9:00~18:00

일요일 공휴일 휴무

계좌번호안내

농협은행 724-01-173541

국민은행 633601-04-044665

예금주 (주)조은캠프

상호명 : (주)조은캠프 ㅣ 대표이사 : 이유락 ㅣ 대구광역시 북구 대학로80 경북대학교 IT융합산업빌딩 11층
사업자번호 : 504-81-62507 ㅣ 본사 : 053-954-0030 ㅣ 기술지원 : 070-7019-1144 ㅣ 팩스 : 050-7711-2200 ㅣ 
원격평생교육시설13호 ㅣ 출판사 : 345-2005-00013 ㅣ 통신판매업 : 2005-대구북구-00158 ㅣ 정보보호책임자 : 김창연  
기사친구는 SSL보안방식의 암호화구간을 적용하여 사이트를 안전하게 이용하실 수 있습니다.
COPYRIGHT 2005 (주)조은캠프 ALL RIGHTS RESERVED.관리자에게 메일보내기