자바스크립트 실수 계산 시 주의점

Updated:

  • 자바스크립트로 정수뿐만 아니라 실수도 계산할 수 있습니다.
> 0.5 + 0.5;
< 1

let a = 0.2 + 0.1

> a //기댓값은 0.3이지만 부동소수점 문제로 인하여 0.30000000000000004 이라는 값이 나옵니다.

  • 실수 연산을 할 때는 주의해야 합니다. 0.1과 0.2를 더하면 당연히 0.3이 나올거라 예상하지만 0.3과 비슷하지만 작은 차이가 발생합니다. 컴퓨터는 0과 1 밖에 모릅니다. 그런데 2진법으로 실수를 표현하면 “무한 반복” 되는 실수가 있어 어쩔 수 없이 근사값 으로 저장합니다.
  • 이게 바로 대부분의 프로그래밍 언어가 겪고있는 **부동소수점 문제** 입니다. 0.1 + 0.2도 이러한 이유로 오차가 발생합니다. 이외에도 다양한 실수 연산에서 오차가 발생하므로 실수를 계산할 때는 다른 방법을 주로 사용합니다.

실수 계산을 정확히 하는 방법

  • 가장 간단한 방법은 실수를 정수로 바꿔서 계산하고 마지막에 다시 실수로 바꾼는 방법으로 계산을 하면 정확하게 할 수 있습니다.
> (0.2 * 10 + 0.1 * 10) / 10
< 0.3 //정확한 값으로 계산이 됩니다!