一、加法.net
/**
* 精确计算两数的和
* @method additive
* @param {Number} v1 有效数值1
* @param {Number} v2 有效数值2
* @return {Number} 两数值的和
*/
function additive(v1,v2){
var n1,n2,m;
//获取两数的浮点位数
try{n1=v1.toString().split(".")[1].length;}catch(e){n1=0}
try{n2=v2.toString().split(".")[1].length;}catch(e){n2=0}
//获取10为底数,最大两位数值的浮点位数次幂
m=Math.pow(10,Math.max(n1,n2));
return (v1*m+v2*m)/m;
} ip
二、减法 get
/**
* 精确计算两数的差
* @method subtraction
* @param {Number} v1 有效数值1
* @param {Number} v2 有效数值2
* @return {Number} v1-v2两数值的差
*/
function subtraction(v1,v2){
var n1,n2,m,n;
//获取两数的浮点位数
try{n1=v1.toString().split(".")[1].length}catch(e){n1=0}
try{n2=v2.toString().split(".")[1].length}catch(e){n2=0}
//获取10为底数,数值的最大浮点位数次幂
m=Math.pow(10,Math.max(n1,n2));
//获取数值的最大浮点位数,设置为返回值的精度长度
n=Math.max(n1,n2);
//toFixed格式化数值位数
return ((v1*m-v2*m)/m).toFixed(n);
} it
三、除法io
/**
* 精确计算两数的商
* @method division
* @param {Number} v1 有效数值1 被除数
* @param {Number} v2 有效数值2 除数
* @return {Number} 两数值的商
*/
function division(v1,v2){
var t1=0,t2=0,n1,n2;
var s1=v1.toString();
var s2=v2.toString();
//获取两数的浮点位数
try{t1=s1.split(".")[1].length}catch(e){}
try{t2=s2.split(".")[1].length}catch(e){}
//去除小数点符号,获取整数
n1=Number(s1.replace(".",""))
n2=Number(s2.replace(".",""))
//两整数相除,乘以10为底数的(除数浮点位数-被除数的浮点位数)
return (n1/n2)*pow(10,t2-t1);
} function
四、乘法class
/**
* 精确计算两数的积
* @method subtraction
* @param {Number} v1 有效数值1
* @param {Number} v2 有效数值2
* @return {Number} 两数值的乘积
*/
function multiplication(v1,v2) {
var m=0;
s1=v1.toString();
s2=v2.toString();
//获取两数的浮点位数
try{m+=s1.split(".")[1].length}catch(e){}
try{m+=s2.split(".")[1].length}catch(e){}
//去除小数点的两数相乘,除以(10为底数,两值浮点位数的次幂)
return Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m);
} di