需求需要做一个价格递增递减效果,思路是:
1、0为终点,递增无上限,并且保留亿位小数;
2、递减0为下限,并且保留亿位小数;废话不多说,直接上代码。
// 价格递增-当前参数分别是:当前价格/多少倍数=(添加"add"为递增,不添为递减)
function priceAdd(a,b,c){
// 获取小数位置,整数和小数单独处理 var i = a.indexOf('.'); if(a.indexOf('.') !='-1'){ // 当前价格 * 一亿,进行递增 var a = Number(a)* Number(b); // 设置递增或递减 if(c =='add'){ a++; }else{ a = --a; } // 使用正则处理一亿小数 var a = numberStr1(a,b); return a; }else{ // 当前价格 * 一亿,进行递增 var a = Number(a)* Number(b); // 设置递增或递减 if(c =='add'){ a++; }else{ a = --a; } a = Number(numberStr1(a,b)); return a; }}其中保留7位小数,计算机没有问题,但是保留8位小数会出现科学计算,处理方法是:
// 动态价格:当前价格/改为动态一个亿
function numberStr1(str,str1){ var s = (Number(str)/Number(str1)).toFixed(8).replace(/\.0+$/, "").replace(/(\.\d+[1-9])0+$/, "$1"); return s;}// 当前价格/一个亿、添加add为递增,不添加为递减
priceAdd(a,b,c)a:当前价格
b:一亿小数c:添加add为递增,不添加为递减