一、加法.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