|  | @@ -523,7 +523,7 @@ let cbAnalyzer = {
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  |      //输入合法性
 | 
	
		
			
				|  |  |      inputLegal: function (exp) {
 | 
	
		
			
				|  |  | -        let ilegalRex = /[^0-9,\u4e00-\u9fa5,\+,\-,\/,\*,\(,\),.,{,},F]/g;
 | 
	
		
			
				|  |  | +        let ilegalRex = /[^0-9,\u4e00-\u9fa5,\+,\-,\/,\*,\(,\),.,{,},F,%]/g;
 | 
	
		
			
				|  |  |          return !ilegalRex.test(exp);
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  |      //基数合法性、存在性
 | 
	
	
		
			
				|  | @@ -622,8 +622,10 @@ let cbAnalyzer = {
 | 
	
		
			
				|  |  |          let ilegalRex = /[\+,\-,\*,\/]{2}/g;
 | 
	
		
			
				|  |  |          let rex2 = /[{]{2}/g;
 | 
	
		
			
				|  |  |          let rex3 = /[}]{2}/g;
 | 
	
		
			
				|  |  | -        let rex4 = /[F]{2}/g
 | 
	
		
			
				|  |  | -        return !ilegalRex.test(exp) && !rex2.test(exp) && !rex3.test(exp) && !rex4.test(exp);
 | 
	
		
			
				|  |  | +        let rex4 = /[F]{2}/g;
 | 
	
		
			
				|  |  | +        let rex5 = /[.]{2}/g;
 | 
	
		
			
				|  |  | +        let rex6 = /[%]{2}/g;
 | 
	
		
			
				|  |  | +        return !ilegalRex.test(exp) && !rex2.test(exp) && !rex3.test(exp) && !rex4.test(exp) && !rex5.test(exp) && !rex6.test(exp);
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  |      //
 | 
	
		
			
				|  |  |      legalExp: function (node) {
 | 
	
	
		
			
				|  | @@ -719,6 +721,21 @@ let cbParser = {
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          return rst;
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  | +    //表达式中的百分数转换成小数
 | 
	
		
			
				|  |  | +    percentToNum: function (exp) {
 | 
	
		
			
				|  |  | +        let rex = /\d+(\.\d+)?%/g;
 | 
	
		
			
				|  |  | +        let percents = exp.match(rex);
 | 
	
		
			
				|  |  | +        let numRex = /\d+(\.\d+)?/g;
 | 
	
		
			
				|  |  | +        if(cbTools.isDef(percents)){
 | 
	
		
			
				|  |  | +            for(let i = 0, len = percents.length; i < len; i++){
 | 
	
		
			
				|  |  | +                let percentNum = percents[i].match(numRex);
 | 
	
		
			
				|  |  | +                if(cbTools.isDef(percentNum) && percentNum.length === 1){
 | 
	
		
			
				|  |  | +                    exp = exp.replace(new RegExp(percents[i], 'g'), percentNum[0]/100);
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        return exp;
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  |      //将行引用转换成ID引用
 | 
	
		
			
				|  |  |      toIDExpr: function (exp) {
 | 
	
		
			
				|  |  |          let exps = [];
 | 
	
	
		
			
				|  | @@ -878,7 +895,10 @@ let calcBase = {
 | 
	
		
			
				|  |  |              //输入式转换表达式
 | 
	
		
			
				|  |  |              let compileExp = $CBP.toCompileExpr(exp);
 | 
	
		
			
				|  |  |              //计算
 | 
	
		
			
				|  |  | -            let calcBaseValue = eval(compileExp);
 | 
	
		
			
				|  |  | +            console.log(compileExp);
 | 
	
		
			
				|  |  | +            let calcExp = $CBP.percentToNum(compileExp);
 | 
	
		
			
				|  |  | +            console.log(calcExp);
 | 
	
		
			
				|  |  | +            let calcBaseValue = eval(calcExp);
 | 
	
		
			
				|  |  |              if(!cbTools.isNum(calcBaseValue)){
 | 
	
		
			
				|  |  |                  throw '表达式不正确';
 | 
	
		
			
				|  |  |              }
 |