javascript中toFixed()四舍五入计算bug

const toFixed = (target, length) => {
      const str = `${target}`; // 将调用该方法的数字转为字符串
      const dot = str.indexOf('.'); // 找到小数点的位置
      let decimal = str.split('.')[1];

      if (dot !== -1) {
        if (decimal.length === length) return str;
        if (decimal.length <= length) {
          // 小数位少于补零
          let n = '';
          for (let i = 0; i < length - decimal.length; i += 1) {
            n += '0';
          }
          return str + n;
        }
        // 小数位多于做四舍五入
        if (Number(decimal[length]) >= 5) {
          const s = parseInt(decimal[length - 1], 10) + 1;
          const d = decimal.slice(0, length - 1);
          decimal = d + s.toString();
          // decimal = decimal.slice(0,length-1);
          return `${str.split('.')[0]}.${decimal}`;
        }
        decimal = decimal.split('').splice(0, length).join('');
        return `${str.split('.')[0]}.${decimal}`;
      }
      // 整数补零
      let n = '';
      for (let i = 0; i < length; i += 1) {
        n += '0';
      }
      return `${str}.${n}`;
    };

 

posted @ 2021-09-18 13:39  大强子pq  阅读(113)  评论(0)    收藏  举报