>  기사  >  웹 프론트엔드  >  Javascript의 toFixed 반올림 예

Javascript의 toFixed 반올림 예

黄舟
黄舟원래의
2017-08-22 11:16:571161검색

이 글에서는 주로 Javascript의 toFixed 반올림 방법을 소개합니다. 편집자가 꽤 좋다고 생각하여 지금 공유하고 참고용으로 제공하겠습니다. 편집기를 따라가서 살펴보겠습니다.

자바스크립트에서 수정된 toFixed는 은행가의 반올림 규칙을 사용합니다.

뱅커 반올림: 소위 뱅커 반올림 방법은 본질적으로 반올림 짝수(반올림-5-이븐 짝수라고도 함) 방법입니다.

간단히 말하면: 5로 반올림하는 것을 고려해 보세요. 5 이후의 숫자가 0이 아니면 1을 더하고, 5 이후의 숫자가 0이면 홀수 또는 짝수로 보고, 5 이전의 숫자가 짝수이면 5 이전의 숫자가 홀수이면 1로 반올림합니다. 하지만 부동 소수점 계산의 정밀도 부족 문제를 해결하기 위해 toFixed를 도입한 것인지, 아니면 은행가의 반올림 방법을 사용하는 것인지는 모두 정밀도 문제를 해결하기 위한 것이지만 이진 부동 소수점 환경 없이는 할 수 없습니다. 하지만 적어도 그것은 우리에게 도움이 되었습니다. 우리는 문제를 발견했고 해결책을 찾았습니다.


 Number.prototype.toFixed = function(length)
    {
      var carry = 0; //存放进位标志
      var num,multiple; //num为原浮点数放大multiple倍后的数,multiple为10的length次方
      var str = this + ''; //将调用该方法的数字转为字符串
      var dot = str.indexOf("."); //找到小数点的位置
      if(str.substr(dot+length+1,1)>=5) carry=1; //找到要进行舍入的数的位置,手动判断是否大于等于5,满足条件进位标志置为1
      multiple = Math.pow(10,length); //设置浮点数要扩大的倍数
      num = Math.floor(this * multiple) + carry; //去掉舍入位后的所有数,然后加上我们的手动进位数
      var result = num/multiple + ''; //将进位后的整数再缩小为原浮点数
      /*
      * 处理进位后无小数
      */
      dot = result.indexOf(".");
      if(dot < 0){
        result += &#39;.&#39;;
        dot = result.indexOf(".");
      }
      /*
      * 处理多次进位
      */
      var len = result.length - (dot+1);
      if(len < length){
        for(var i = 0; i < length - len; i++){
          result += 0;
        }
      }
      return result;
    }

이 방법의 일반적인 아이디어는 먼저 반올림 비트를 찾고 위치가 5보다 크거나 같은지 확인하고 조건이 충족되면 수동으로 한 비트를 앞으로 이동한 다음 매개 변수를 사용하는 것입니다. 크기를 사용하여 매개변수 지수 배 10만큼 원래 부동 소수점 수를 증폭한 다음 바닥을 사용하여 반올림 비트를 포함한 모든 숫자를 제거하고 이전 수동 캐리를 기반으로 캐리할지 여부를 결정합니다.

위 내용은 Javascript의 toFixed 반올림 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.