zoukankan      html  css  js  c++  java
  • vue 重写toFixed---四舍六入五取偶

        /**
         * 重写toFixed---四舍六入五取偶
         * @param {*} length 截取长度
         * @param {*} num 截取数值
         * https://blog.csdn.net/qq_38523017/article/details/83989543
         */
        Vue.prototype.$toFixed = function (length, inputNum) {
          if (inputNum === null) inputNum = 0;
          var carry = 0; //存放进位标志
          var num, multiple; //num为原浮点数放大multiple倍后的数,multiple为10的length次方
          var str = inputNum + ""; //将调用该方法的数字转为字符串
          var dot = str.indexOf("."); //找到小数点的位置
          if (dot != -1 && str.substr(dot + length + 1, 1) >= 5) {
            carry = 1; //找到要进行舍入的数的位置,手动判断是否大于等于5,满足条件进位标志置为1
          }
          multiple = Math.pow(10, length); //设置浮点数要扩大的倍数
          let multiply = this.$numMulti(inputNum, multiple); //小数相乘精度问题
          num = Math.floor(multiply) + carry; //去掉舍入位后的所有数,然后加上我们的手动进位数
          var result = num / multiple + ""; //将进位后的整数再缩小为原浮点数
    
          /*
           * 处理进位后无小数
           */
          dot = result.indexOf(".");
          if (dot < 0) {
            result += ".";
            dot = result.indexOf(".");
          }
    
          /*
           * 处理多次进位
           */
          var len = result.length - (dot + 1);
          if (len < length) {
            for (var i = 0; i < length - len; i++) {
              result += 0;
            }
          }
          return result;
        };
        //乘法丢失精度问题
        Vue.prototype.$numMulti = function (num1, num2) {
          var baseNum = 0;
          try {
            baseNum += num1.toString().split(".")[1].length;
          } catch (e) {}
          try {
            baseNum += num2.toString().split(".")[1].length;
          } catch (e) {}
          return (
            (Number(num1.toString().replace(".", "")) *
              Number(num2.toString().replace(".", ""))) /
            Math.pow(10, baseNum)
          );
        };
        /**

    参考链接:

     https://blog.csdn.net/qq_38523017/article/details/83989543
  • 相关阅读:
    nginx增加lua支持
    使用nginx+lua实现web项目的灰度发布
    amoeba学习
    信号有关的内容
    Linux系统的进程相关内容
    等待类型
    孤立用户故障排除
    恢复数据库
    执行计划之Insert,update,delete
    临时表和表变量
  • 原文地址:https://www.cnblogs.com/zhaomeizi/p/14349919.html
Copyright © 2011-2022 走看看