850*77.1=100,000? 엑셀 버그?

2007.09.27 10:40 컴퓨터/마이크로소프트
랜덤여신의 폐인모드 - "Excel 2007의 황당한 버그 - 85077_1은 100,000" 글에서 엑셀 2007의 버그를 소개합니다. 850*77.1의 값은 65,535인데 100,000으로 나온다는 것이죠. 이런 버그가 하나 뿐인지는 모르겠습니다만, 스프레드시트 프로그램으로써 가장 기본이 되는 계산에 오류가 있다면 안 되겟지요.

엑셀의 결과 값을 철석같이 믿는 분들이 많고 워드로 작업할 문서 작업도 모두 엑셀로 사용하시는 분도 가끔 뵙니다. 메일로 받았을 때, 엑셀로 작성된 문서 파일을 받을 때도 있구요.

스프레드시트 프로그램1979년에 "댄 브리클린"이 Apple II용으로 만든 비지칼크(VisiCalc)가 최초였습니다. 참 대단한 프로그램이었죠. 요즘 고사양의 PC와 비교도 되지 않는 열악한 환경의 Apple II에서 스프레드시트 프로그램을 만들었으니까요. 또한, 사용하기도 편해서 매우 많은 곳에서 사무용으로 사용한 매우 유명한 프로그램입니다.<

저도 가끔 엑셀만 제대로 사용한다면 컴퓨터 값을 뽑았다라고 얘기를 할 정도록 매우 훌륭한 프로그램입니다.

엑셀에 대한 추억

벌써 10년 전의 일입니다만 아침에 출근해 보니 경리 얼굴이 초췌하고 퀭해 보였습니다. 이유를 물어보니 견적서를 뽑느라 밤을 새웠다는 것이죠.

이유는 고급, 중급, 저급 인원과 자재 비용을 입력하여 최종 계약금을 계산하는데, 아마 대부분이 그럴지 모르겠습니다만 우선 계약금을 결정하고 인원이나 자재 수를 바꾸어 가면서 문서를 작성했습니다. 겨우 계산하면 인원수 배분이 마음에 들지 않는다, 자재가 한쪽으로 치우쳤다, 뭐다 되돌리기를 몇 번하고, 겨우 맞추면 사장님이 계약금을 바꾸더라는 것이죠.

들어 온 지 며칠 안 되는 신입 경리가 작은 탁상 계산기로 하고 있었으니 밤을 새울만도 하죠. 그리고 얼마나 힘들었겠습니까. 그러나 문제는 견적서를 들고 나가야 하는데 아직도 맞추지를 못했답니다. 사장님은 화가 났고, 경리는 곧 울음이라도 터트릴 것처럼 보였죠.

그때, 엑셀이 생각나서 급히 견적서 시트를 작성했습니다. 엑셀을 잘 몰랐지만 어떤 프로그램인가 궁금해서 만져 본적이 있던 것이 도움이 되었죠. 엑셀 책을 보면서 어찌어찌 만들었는데, 기억하기로는 3시간 정도 걸린 것으로 생각됩니다.

이제는 인원수와 자재 수를 바꿔 가면서 계약금을 맞출 수 있었고, 이런 계산을 보시던 이사님과 사장님은 계약금과 비용에 대해 더욱 집중할 수 있었습니다.

그리고 바로 인쇄. 매우 깔끔하게 작업 끝. 그리고 상대 측에서도 Microsoft사의 엑셀로 작성했다니까 아무 말도 안 하더라는 것이죠.

꼭 경리나 회계 업무를 보시지 않더라도 간단히 엑셀을 학습하시면 여러 모로 도움이 될 때가 많습니다. ^^
이 댓글을 비밀 댓글로
    • sehui32
    • 2007.09.27 11:19
    그치만.. 엑셀이 노가다가 될 경우도 종종 있어요...
    • [비홍]
    • 2007.09.27 11:38
    프로그램 하다가 가장 힘빠지는 말 중에 하나가
    '엑셀만도 못한 프로그램' 이란 이야기를 듣는 때였었죠.
    하지만 엑셀은 정말 대단한 프로그램이죠. ^^
    • 아우...엑셀과 비교되신다면 대단한 실력가로 생각됩니다만,
      한편으로는 엑셀을 별로 안 좋게 생각하시는 분들도 많다는 얘기인가요?
  1. 어딜가도 가장 쓰게 되는 프로그램이 엑셀이 아닐까 합니다..^^
    • TV에서 어느 교수님이 연구한 결과를 엑셀로 수치와 그래프를 보여 주면서 설명하는데,
      익숙치 않아서 인지 조금 놀랬습니다. 대부분 연구하시는 분들은 나름대로 전문 소프트웨어를
      사용하시는 것으로 알았거든요.

      예상하기로는 전문 소프트웨어가 따로 있지만 엑셀로 출력해서,
      그 결과를 보여주는 것이 아닐까 생각됩니다.
      인쇄부분 같은 경우 엑셀 파일로 출력해 달라고 요구하는 경우가 많거든요.
    • Dharma
    • 2007.09.27 12:31
    엑셀 2003은 제대로 나와요...
      • jw매냐
      • 2007.09.27 15:04
      저두요
      2003에는 제대로 나오네요~
  2. 어떤 분은 엑셀만 있으면 모든 문서 형식을 만들 수 있다는 말도 하신 걸 들었습니다. 엑셀이 겉 치장을 잘 할 수 없서서 그렇지 대단한 프로그램 인것 같아요.. 스프레드시트의 기능 이상의 것도 하니까요.. MS거라서 그런 기능이들이 많이 들어가 있기도 하지만요...ㅋ
    • 엑셀이 대단한 프로그램임에는 틀림없습니다만,
      그렇다고 엑셀만 사용하시는 분을 뵈면 안쓰럽기까지 합니다. ^^
    • 두운초온
    • 2007.09.27 13:31
    대마소의 엑셀에 버그가 있다는 게 재미있습니다.
    이것을 발견하신 분이 대단한 사람이네요.
    850*77.1과 850*77.1+1에서만 버그가 발생하므로 별로 신경이 쓰이지는 않습니다.
    2^16 = 65,636 근처에서 버그가 보이는 것이 수상합니다.
    • ju2fafa
    • 2007.09.27 13:45
    http://groups.google.com/group/microsoft.public.excel/browse_thread/thread/2bcad1a1a4861879/2f8806d5400dfe22
    에서 보니 이런 내용이 있군요.

    ===========================================
    Public Sub testBug()
    Me.Range("D5").Value = 850
    Me.Range("D6").Value = 77.1
    Debug.Print _
    Application.WorksheetFunction.SumProduct(Me.Range("D5"),
    Me.Range("D6"))
    End Sub

    Also displays 65,535

    ===========================================
    계산은 제대로 한다는 얘긴가요?
    vbe를 사용하지 않고 직접 셀에 입력하면 결과가 어떨까요?
    그러니까 =77.1*850 이라고 하지 않고
    A1 에 77.1, B1에 850, C1에 =A1*B1 이라고 하면..
    그나저나 이전버전에선 제대로 표현하던 것이 갑자기 버그로 나타났으니 문제군요.
    2007버전을 잠시 설치했다가 인터페이스가 너무 변해 적응이 안 되서 안 쓰고 있습니다만..
    한번 해 보고 싶긴 하군요.
      • ju2fafa
      • 2007.09.27 13:56
      윗글에서
      괄호닫기 기호 " )"가 얄궂은 이모티콘으로 등장하네요^^
      왜 그런지 모르겠습니다.
    • ju2fafa
    • 2007.09.27 13:54
    위 분 =77.1*850 에서만 이런결과가 나와서 신경쓰이지 않는다고 하셨는데

    =5.1*12850
    =10.2*6425
    =20.4*3212.5
    =40.8*1606.25
    =77.1*850
    =154.2*425
    =212.5*308.4
    =308.4*212.5
    =425*154.2
    ..etc

    이 결과도 마찬가지라고 하는군요. 직접 해보진 않았습니다만..^^
    동감이 가는 글이 있더군요.
    http://www.joelonsoftware.com/items/2007/09/26b.html
    대략 요약하자면 0.333333333333333333333333...
    같은 숫자를 어떻게 컴퓨터에서 저장하느냐의 문제일 듯 하다는 거지요.
    • 내부고발자
    • 2007.09.27 14:11
    이제 겨우 오피스 2007의 인터페이스에 적응했는데, 버그가 있었군요. ^^
    • 톰팍
    • 2007.09.27 15:46
    심심해서 해봤습니다... ju2fafa 님이 말씀하신 것 처럼 수식으로 해봤는데도 결과는 같네요... 그리고, 그 아래에 나와 있는 것들도 결과가 같네요... 이거 괜스레 엑셀이 못미더워 지네요.. 킁...
    • 나중에 엑셀로 해가면 상대방이 못 믿어워하는 것인지 모르겠습니다. ^^;

      역시 몇 년 전의 일인데, 엑셀로 작성해서 위로 보고한 적이 있습니다.
      그때 서류를 받으신 분이 정말 한량으로 왜 회사에 다니는지,
      월급은 무슨 이유로 꼬박꼬박 가져가는지 전혀 이해가 되지 않는 분이셨습니다.

      몇 시간 후에 저를 부르더니 서류를 제 얼굴로 던지면서 건물이 떠 내려갈듯 욕을 하더군요.
      계산기로 여러번 확인해 보았는데, 계산이 틀리다는 것이죠.

      원인은 반올림 때문이었습니다. 이분은 계산기에서 계속 연이어 계산할 때에는 반올림하지 않았다가,
      메모했다가 계사하는 값은 2째 자리에서 반올림해서 입력했기 때문이죠.

      이런 똘I를 이해 시키는 것도 쉽지 않고 귀찮아서 round()로 도배한 적이 있었죠. ^^
    • 호세아
    • 2007.09.27 18:26
    ㅋㅋㅋ 늘 엑셀의 귀재라고 으시대는 직원이 있었습니다.
    그래서 그 직원을 불러서, 시트에 850*77.0 850*77.2의 결과를 보여준다음
    850*77.1을 쳐서 답을 보여주었습니다. 그리고 짐짓 물었죠..." 이거 왜 이렇게 나오는거냐?"
    그 직원 전전긍긍...셀서식 살펴보는등 부산을 떨다가...포기하더라구요..
    그래서 그랬죠...앞으로 귀재니 모니 그러지마...

    제가 못된건가요...재미있었습니다.
    • 하하...그 직원분 매우 당황하셨겠는데요.
      나중에 버그라는 것을 아시게되면 매우 허무하시겠어요....ㅋㅋ
    • 4천만
    • 2007.09.27 20:08
    갑자기 뜽금맞은 질문입니다.
    컴퓨터에서 파이값이나 루트 2 같이 무한 반복되는 값들은 어떻게 계산하지 하는 궁금합니다.
    분명 누구라도 파이값과 루트 2를 선으로 그어서 표시 할수 있습니다.
    그런데 컴퓨터는 어떻게 인식하나요? 오차는 어떻게 보정하나요?
    예전에 읽은 sf소설 생각이 납니다. 컴퓨터의 도저히 인간의 능력으로 검증하고 인지할수 없을 정도의 작은수의 오차나 아주 큰수의 오차로 결국 문명이 말살한다는..
    • 저도 자세한 방법은 모릅니다만, 적용하는 분야의 요구되는 정밀도에 따라 자릿수를 결정하고 보정하는 것으로 알고 있습니다.
      즉, 무시해도 되는 자릿수를 결정하는 것인데, 잘못 결정하면, 작은 사고나 소설에서 처럼 큰 재앙이
      발생할 수 있겠죠.
    • 두운초온
    • 2007.09.27 21:42
    ju2fafa님의 말씀이 맞습니다.
    850*77.1과 850*77.1+1에서만 버그가 발생하는 것이 아니고
    =5.1*12850
    =10.2*6425
    =20.4*3212.5
    =40.8*1606.25
    =77.1*850
    =154.2*425
    =212.5*308.4
    =308.4*212.5
    =425*154.2
    ..etc에서도 버그가 발생하므로
    앞으로 중요한 두 수를 곱하는 계산은 노가다를 해서라도 +0.999999999 -1.000000000해서 이 버그를 막아야 할 것 같습니다.
    (버그패치가 나올 때까지)
    예)
    5.1*12850=100,000 (버그)
    5.1*12850+0.999999999-1=65,535 (버그가 사라졌음)
    • 엑셀의 신뢰를 떨어 뜨리지 않게 하기 위해서라도 패치가 빨리 나와야 겠군요.
      지금 엑셀 개발자가 컴퓨터 앞에서 고생하고 있을지 모르겠습니다. ^^
    • 에궁
    • 2007.09.27 22:52
    오늘 주제와는 별개의 이야기 입니다만, 프로그램을 하다 보면 javascript에서 alert("a") 이런식으로 1 byte짜리 메시지를 띄우면 JW Browser에서 결과가 안나타나요. 다시 말하면 마지막 1 byte는 짤리는데 내 PC문젠가요 아니면 환경 설정 문제인가요?
    • aperire
    • 2007.09.28 00:48
    전 저희 회사 기획자들 보면서 늘 놀랩니다.
    어떻게 그림판과 엑셀만 가지고 포삽같은 결과값을 출력하는지;;;
    난 계산만 했는데;; ㅋㅋ
    • jinisopen
    • 2007.09.28 03:41
    비지칼크 아직도 현용으로 돌아가는 넘이죠..
    정확히 말하면 PDA에서 돌아가긴 하지만..ㅋㅋ
    • 좋은날
    • 2008.05.20 17:45
    오호호홋 원숭이도 나무에서 떨어질때가 있군요...
    수많은 사람들이 사용을 하니 버그도 발견되고.. 좋네요 머 ^^
    • 산날막
    • 2008.06.28 12:03
    저는 2007 쓰는데 저런 버그는 없네요 ^^:
    제꺼만 이상이 없는건가요??? ㅎ
    • 01
    • 2009.10.18 09:59
    공무 작성할 때 엑셀도 못 미더워서 계산기로 10번은 더 계산한 다음 전송한다던데.... 그럴만 하군요!