[Javascript, ECMAScript] float(실수) 연산 오류 원인과 해결 방법

Javascript에서 float(실수) 연산을 수행하다 보면 원치않는 결과가 발생하는 경우가 있다.
예를 들어 아래와 같은 연산을 수행하는 경우 0.3이라는 결과를 기대하지만, 실제로는 0.30000000000000004라는 값이 표시된다.

console.log(0.1 + 0.2); //0.30000000000000004


이러한 오류가 발생하는 이유는 Javascript(ECMAScript)가 IEEE-754를 표준으로 사용하고 있기 때문이다. IEEE-754는 컴퓨터에서 부동소수점을 표시하는 방법을 정하는 표준이다.


사실 위와같은 결과가 나오는 것은 표준을 따르고 있는 것이기 때문에 정상 작동하고 있는 것이지만... 우리가 원하는 결과는 0.3이므로 수정이 필요하다.

아래와 같이 parseFloat()toFixed() 메서드를 이용해 해결 할 수 있다.


console.log(0.1 + 0.2); //0.30000000000000004
const num1 = parseFloat(0.1);
const num2 = parseFloat(0.2);
console.log((num1 + num2).toFixed(2)); //0.3

toFixed() 메서드의 인자값은 소수 몇째 자리까지 표시할 것인지를 지정한다.


댓글

이 블로그의 인기 게시물

[IIS] OraOLEDB.Oracle.1 설치 방법

[IIS] IIS 7.5 HTTP 오류 401.3 - Unauthorized 해결방법

[ASP] Server.CreateObject를 호출하지 못했습니다. 이 개체에 액세스할 수 없습니다.