JavaScript에서 부동소숫점 연산 오차를 보완 할 라이브러리가 있는지요?

조회수 1360회

보통 프로그래밍언어에서 부동소숫점 연산시 오차가 발생합니다.

var x = 0.2 + 0.1;  // 0.3
console.log(x)    // 0.30000000000000004

var y = 0.1 * 0.2; // 0.02 
console.log(y)   // 0.020000000000000004

이런 오차를 보완하기 위해 다음과 같은 함수를 사용합니다.

var fpCalc = function (op, x, y) {
    var xexp = Math.pow(10, String(x).length - String(x).indexOf('.') - 1),
        yexp = Math.pow(10, String(y).length - String(y).indexOf('.') - 1);
    var tens = Math.max(100, xexp, yexp);
    var n = 0;
    switch(op) {
        case '*':  n = x * y;
            break;
        case '-':  n = x - y;
            break;                
        case '+': n = x + y;
            break;
        case '/': n = x / y;
            break;
        default:  
            return NaN;
    }
    return Math.round(n * tens) / tens;
};

console.log(fpCalc('+', 0.1, 0.2));
console.log(fpCalc('+', 707.4, 226.2));
console.log(fpCalc('*', 0.1, 0.2));
console.log(fpCalc('/', 214500, 1.1));

다수 복잡한데, 혹시 다른 방법이나 라이브러리가 있는지 알고 싶습니다.

1 답변

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)