• 实现加减乘除的插件


    因为在做带小数的计算时,总会出现10.999999998这种类似的结果。

    故有了这个插件。

    直接上代码:

    index.html

    <body>
      <input type="text" id="number" placeholder="1,2,3">
      <br>
      <select name="" id="arith">
        <option value="0">加法</option>
        <option value="1">减法</option>
        <option value="2">乘法</option>
        <option value="3">除法</option>
      </select>
      <br>
      <button id="btn">计算</button>

      <div id="result"></div>

      <script>
      document.getElementById('btn').onclick = function(){
        var number = document.getElementById('number').value;
        var meth = document.getElementById('arith').value;
        var result = document.getElementById('result');
        if(number !== ''){
          var arr = number.split(',');
          switch (meth){
            case "0":
            try{
              result.innerHTML = arith.sum.apply(arith,arr);
            }catch(e){
              console.log(e.name+': '+ e.msg);
            }
            break;
            case "1":
            try{
              result.innerHTML = arith.exc.apply(arith,arr);
            }catch(e){
              console.log(e.name+': '+ e.msg);
            }
            break;
            case "2":
            try{
              result.innerHTML = arith.mul.apply(arith,arr);
            }catch(e){
              console.log(e.name+': '+ e.msg);
            }
            break;
            case "3":
            try{
              result.innerHTML = arith.div.apply(arith,arr);
            }catch(e){
              console.log(e.name+': '+ e.msg);
            }
            break;
            default:
            throw{
              name:'Error',
              msg:meth
            }
            break;
           }
         }else{
           result.innerHTML = '请输入计算数';
         }
      }
      </script>

    </body>

    arith.js

    var arith={
      data:[],
      /**检查入参的数据类型 */
      _int: function(){
        var i,flag=true,arr=[],c=0;
        for(i=0;i<this.data.length;i++){
          var num = this.data[i].toString().replace(/ +/g,'');
          num = num.replace(/,/g,'');
          if(isNaN(Number(num))){
            flag = false;
            return false;
          }
          arr.push(Number(num));
          var d;
          try{
            d = this.data[i].toString().split('.')[1].length;
          }catch(e){
            d = 0;
          }
          c = Math.max(c,d);
        }
        if(flag){
          arr.max = c;
          return arr;
        }else{
          return false;
        }
      },
    /**加法 */
      sum: function(){
        this.data = arguments;
        if(this._int()){
          var data = this._int();
          var i,result=0;
            for(i=0;i<data.length;i++){
              var d;
              try{
                d = data[i].toString().split('.')[1].length;
              }catch(e){
                d = 0;
              }
              result += Number(data[i].toString().replace('.',''))*Math.pow(10,data.max - d);
            }
            return result/Math.pow(10,data.max);
          }else{
            throw{
              name:'Error',
              msg:'The arguments of function arith.sum is not Number'
            }
          }
      },
      /**减法 */
      exc: function(){
        this.data = arguments;
          if(this._int()){
            var data = this._int();
            var i,result = 'begain';
            for(i=0;i<data.length;i++){
              var d;
              try{
                d = data[i].toString().split('.')[1].length;
              }catch(e){
                d = 0;
              }
            if(result == 'begain'){
              result = Number(data[i].toString().replace('.',''))*Math.pow(10,data.max - d);
            }else{
              result += -Number(data[i].toString().replace('.',''))*Math.pow(10,data.max - d);
            }
          }
          return result/Math.pow(10,data.max);
          }else{
            throw{
              name:'Error',
              msg:'The arguments of function arith.exc is not Number'
            }
          }
        },
      /**乘法 */
      mul: function(){
        this.data = arguments;
        if(this._int()){
          var data = this._int();
          var i,result='begain',s=0;
          for(i=0;i<data.length;i++){
            var d;
            try{
              d = data[i].toString().split('.')[1].length;
            }catch(e){
              d = 0;
            }
            s += d;
            if(result == 'begain'){
              result = Number(data[i].toString().replace('.',''));
            }else{
              result = result*Number(data[i].toString().replace('.',''));
            }
          }
          return result/Math.pow(10,s);
          }else{
            throw{
              name:'Error',
              msg:'The arguments of function arith.mul is not Number'
            }
          }
        },
      /**除法 */
      div: function(){
        this.data = arguments;
        if(this._int()){
          var data = this._int();
          var i,result='begain',s=0,m=0;
          for(i=0;i<data.length;i++){
            var d;
            try{
              d = data[i].toString().split('.')[1].length;
            }catch(e){
              d = 0;
            }
            if(result == 'begain'){
              s = d;
              result = Number(data[i].toString().replace('.',''));
            }else{
              m += d;
              result = result/Number(data[i].toString().replace('.',''));
             }
            }
            return result*Math.pow(10,m-s);
            }else{
              throw{
                name:'Error',
                msg:'The arguments of function arith.div is not Number'
              }
            }
          }
        }

    欢迎小伙伴们试用和提bug

  • 相关阅读:
    搭建docker镜像仓库(一):使用registry搭建本地镜像仓库
    C++ quick sort
    Ubuntu C++ uuid_generate vs Windows UuidCreate
    今天做错的笔试题:StringBuffer引用传参
    一般报java.lang.NullPointerException的原因有以下几种
    has a / is a 的区别
    1、一日一程序之C语言的Hanoi问题
    Java enum的用法详解
    OpenGL ES EAGLContext 和 EGLContext
    Windows OpenGL ES 图像对比度调节
  • 原文地址:https://www.cnblogs.com/xuniannian/p/9566177.html
Copyright © 2020-2023  润新知