// 加法运算
function floatAdd (arg1, arg2) {
let r1, r2, m
try { r1 = arg1.toString().split('.')[1].length } catch (e) { r1 = 0 }
try { r2 = arg2.toString().split('.')[1].length } catch (e) { r2 = 0 }
m = Math.pow(10, Math.max(r1, r2))
return Number((arg1 * m + arg2 * m) / m)
}
// 减法运算
function floatSub (arg1, arg2) {
let r1, r2, m, n
try { r1 = arg1.toString().split('.')[1].length } catch (e) { r1 = 0 }
try { r2 = arg2.toString().split('.')[1].length } catch (e) { r2 = 0 }
m = Math.pow(10, Math.max(r1, r2))
// 动态控制精度长度
n = (r1 >= r2) ? r1 : r2
return Number(((arg1 * m - arg2 * m) / m).toFixed(n))
}
// 乘法运算
function floatMul (arg1, arg2) {
let m = 0
let s1 = arg1.toString()
let s2 = arg2.toString()
try { m += s1.split('.')[1].length } catch (e) {}
try { m += s2.split('.')[1].length } catch (e) {}
return Number(s1.replace('.', '')) * Number(s2.replace('.', '')) / Math.pow(10, m)
}
// 除法运算
function floatp (arg1, arg2) {
let t1 = 0
let t2 = 0
let r1, r2, n
try { t1 = arg1.toString().split('.')[1].length } catch (e) {}
try { t2 = arg2.toString().split('.')[1].length } catch (e) {}
r1 = Number(arg1.toString().replace('.', ''))
r2 = Number(arg2.toString().replace('.', ''))
// 动态控制精度长度
n = (t1 >= t2) ? t1 : t2
return Number(Number((r1 / r2) * Math.pow(10, t2 - t1)).toFixed(n))
}
语法:
Number.toFixed(num)
toFixed() 方法可把 Number四舍五入为指定小数位数的数字。
Number:使用toFixed()方法的必须是数值类型,否则会报错
num :必需。规定小数的位数,是 0 ~ 20 之间的值,包括 0 和 20,
有些实现可以支持更大的数值范围。如果省略了该参数,将用 0 代替
Math.pow() 函数返回基数(base)的指数(exponent`)次幂
Math.pow(10,2) // 100
Math.max()
动态控制小数点函数
` Math.max() ` 函数返回一组数中的最大值。