본문 바로가기
카테고리 없음

왜 같은 프로그램인데도 컴퓨터마다 결과가 다를까

by by_merry 2026. 5. 4.

처음에는 컴퓨터가 굉장히 정확한 기계라고 생각한다. 같은 프로그램을 실행하면 어디서든 똑같은 결과가 나올 것 같기 때문이다. 나도 예전에는 그렇게 믿었다. 그런데 실제로는 같은 프로그램을 실행했는데도 결과가 조금씩 다르게 나오는 경우가 있다. 특히 숫자 계산이나 그래픽, 또는 특정 기능에서 이런 차이를 경험하게 된다. 처음에는 “이게 왜 다르지?”라는 생각이 들었는데, 조금씩 원리를 알아보니까 생각보다 이유가 많았다.

 

컴퓨터는 같아 보여도 내부 환경은 모두 다르다

겉으로 보기에는 같은 컴퓨터처럼 보여도, 내부 구성은 생각보다 다양하다. CPU 종류, 운영체제(OS), 메모리 구조, 심지어 사용하는 라이브러리까지 모두 다를 수 있다.

예를 들어 같은 프로그램이라도:

  • Windows에서 실행할 때와 macOS에서 실행할 때
  • Intel CPU와 ARM CPU에서 실행할 때

결과가 달라질 수 있다.

나도 예전에 간단한 코드를 친구랑 같이 실행해본 적이 있는데, 출력 결과가 살짝 다르게 나온 적이 있었다. 처음에는 코드가 틀린 줄 알았는데, 알고 보니까 실행 환경 차이 때문이었다.

이걸 통해 느낀 건 하나였다. “같은 프로그램”이라고 해도, 그걸 실행하는 환경이 다르면 결과도 달라질 수 있다는 점이다. 컴퓨터는 정확하지만, 그 정확함이 적용되는 조건이 완전히 동일해야 같은 결과가 나온다.

숫자 계산에서도 오차가 발생할 수 있다 (부동소수점 문제)

많은 사람들이 놓치는 부분이 바로 숫자 계산이다. 우리는 0.1 + 0.2 같은 계산이 당연히 0.3이라고 생각한다. 하지만 컴퓨터에서는 이 값이 정확하게 표현되지 않을 수 있다.

이건 부동소수점이라는 방식 때문인데, 쉽게 말하면 컴퓨터가 소수를 완벽하게 표현하지 못하고 근사값으로 저장하기 때문이다.

그래서 환경에 따라:

  • 연산 순서가 조금 달라지거나
  • 처리 방식이 다르면

결과도 미세하게 달라질 수 있다.

나도 예전에 계산 결과가 0.30000000000004처럼 나오는 걸 보고 당황한 적이 있었다. 분명 간단한 계산인데도 이렇게 나오는 걸 보고 “컴퓨터가 틀린 건가?” 싶었는데, 알고 보니 이건 정상적인 현상이었다.

이런 작은 차이가 쌓이면, 프로그램 전체 결과에도 영향을 줄 수 있다.

같은 프로그램이라도 실행 과정이 항상 동일하지는 않다

또 하나 중요한 이유는 프로그램 실행 과정 자체가 항상 완전히 동일하지 않다는 점이다. 특히 멀티스레드나 병렬 처리가 들어가는 경우에는 실행 순서가 매번 달라질 수 있다.

예를 들어 여러 작업이 동시에 실행될 때:

  • 어떤 작업이 먼저 끝나는지
  • 데이터를 언제 읽고 쓰는지

이 순서가 조금만 달라져도 결과가 달라질 수 있다.

나도 간단한 병렬 처리 코드를 테스트하다가, 실행할 때마다 결과가 조금씩 달라지는 걸 본 적이 있다. 그때 처음으로 “프로그램이 항상 같은 순서로 실행되는 게 아니구나”라는 걸 체감했다.

이런 상황은 특히 서버나 고성능 프로그램에서 더 자주 발생한다. 그래서 이런 문제를 해결하기 위해서는 동기화 같은 추가적인 설계가 필요하다.

한 줄로 정리하면 같은 프로그램이라도 실행 환경, 숫자 처리 방식, 실행 순서가 조금씩 다르기 때문에 컴퓨터마다 결과가 달라질 수 있다.