부동소수점 뺄셈의 문제점
JavaScript에서 부동소수점(float) 값을 그대로 뺄셈하면 0.5000000000000004처럼 예상치 못한 오차가 발생할 수 있습니다. 이는 컴퓨터가 소수를 2진법으로 표현하기 때문에 생기는 현상입니다. 두 부동소수점 값을 정확하게 빼려면 parseFloat()과 toFixed()를 함께 사용하는 것이 좋습니다.
예제 코드
다음은 실제 동작하는 예제 코드입니다.
var firstValue = 4.3;
var secondValue = 3.8;
console.log("첫 번째 값=" + parseFloat(firstValue).toFixed(1) + " 두 번째 값=" + parseFloat(secondValue).toFixed(1));
var result = parseFloat(firstValue).toFixed(1) - parseFloat(secondValue).toFixed(1);
console.log("결과=" + result);
실행 방법
위 프로그램을 실행하려면 Node.js 환경에서 다음 명령어를 입력합니다.
node fileName.js
여기서는 파일 이름이 demo309.js라고 가정합니다.
실행 결과
위 코드를 실행하면 다음과 같은 출력을 확인할 수 있습니다.
PS C:\Users\Amit\javascript-code> node demo309.js
첫 번째 값=4.3 두 번째 값=3.8
결과=0.5
코드 설명
parseFloat(): 입력값을 부동소수점 숫자로 변환합니다.toFixed(1): 소수점 첫째 자리까지 반올림한 값을 반환하여 불필요한 오차를 제거합니다.toFixed()의 결과는 문자열이지만, 뺄셈 연산 과정에서 JavaScript가 자동으로 숫자로 변환하므로0.5라는 정확한 결과를 얻을 수 있습니다.