JavaScript 의 Number. toFixed () 방법 에 대한 개인 적 인 이해

2061 단어
수요: 부동 소수점 에 대해 반올림 정밀도 획득.
문제: 직접 사용 Number.toFixed() 하면 이상 한 반올림 이 발생 할 수 있 습 니 다.
원인: 컴퓨터 부동 소수점 저장 소 는 2 진법, jsNumber.toFixed() 실제 정밀도 확인 규칙 은 반올림 5 쌍, 반올림, 6 입 1, 5 시 브 라 우 저 커 널 에 따라 계산 결과 도 다르다.
『 8195 』 구체 적 인 원 리 는 여기 서 상세 하 게 설명 하지 않 으 므 로 여러분 은 스스로 관련 자 료 를 조회 할 수 있 습 니 다.
해결 방법: 다시 Number.toFixed() 방법.
실현 원리: 부동 소수점 을 정수 로 바 꾸 고 필요 한 자릿수 를 유지 한 다음 에 부동 소수점 으로 전환한다.
구현 코드:
Number.prototype.toFixed = function (length) {
    var s = this + '';
    var len = length || 0;
    var result = s;
    var arr = s.split('.');

    //  
    if (arr.length < 2) {
        if (len > 0) {
            result += '.';
            for (var i = 1; i <= len; i++) {
                result += '0';
            }
        }
        return result;
    }

    //  
    var first = arr[0];
    var second = arr[1];

    //       length
    if (second.length == len) {
        return result;
    }

    //       length
    if (second.length < len) {
        for (var k = 1; k <= len - second.length; k++) {
            result += '0';
        }
        return result;
    }

    //       length
    result = first + second.substr(0, len + 1);
    var last = Math.floor((result * 1 + 5) / 10);
    result = (last / Math.pow(10, len)).toFixed(len);
    return result;
};

비고: 해결 방안 은 여러 가지 가 있 습 니 다. 이것 은 개인의 이해 일 뿐 참고 하 시기 바 랍 니 다.

좋은 웹페이지 즐겨찾기