需求需要做一个价格递增递减效果,思路是:
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为递增,不添加为递减