麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > JavaScript > 正文

js關于精確計算和數值格式化以及直接引js文件

2019-11-20 21:11:05
字體:
來源:轉載
供稿:網友
復制代碼 代碼如下:

(function () {
var calc = {
/*
函數,加法函數,用來得到精確的加法結果
說明:javascript的加法結果會有誤差,在兩個浮點數相加的時候會比較明顯。這個函數返回較為精確的加法結果。
參數:arg1:第一個加數;arg2第二個加數;d要保留的小數位數(可以不傳此參數,如果不傳則不處理小數位數)
調用:Calc.Add(arg1,arg2,d)
返回值:兩數相加的結果
*/
Add: function (arg1, arg2,d) {
arg1 = arg1.toString(), arg2 = arg2.toString();
var arg1Arr = arg1.split("."), arg2Arr = arg2.split("."), d1 = arg1Arr.length == 2 ? arg1Arr[1] : "", d2 = arg2Arr.length == 2 ? arg2Arr[1] : "";
var maxLen = Math.max(d1.length, d2.length);
var m = Math.pow(10, maxLen);
var result = Number(((arg1 * m + arg2 * m) / m).toFixed(maxLen));
var d = arguments[2];
return typeof d === "number" ? Number((result).toFixed(d)) : result;
},
/*
函數:減法函數,用來得到精確的減法結果
說明:函數返回較為精確的減法結果。
參數:arg1:第一個加數;arg2第二個加數;d要保留的小數位數(可以不傳此參數,如果不傳則不處理小數位數
調用:Calc.Sub(arg1,arg2)
返回值:兩數相減的結果
*/
Sub: function (arg1, arg2) {
return Calc.Add(arg1, -Number(arg2), arguments[2]);
},
/*
函數:乘法函數,用來得到精確的乘法結果
說明:函數返回較為精確的乘法結果。
參數:arg1:第一個乘數;arg2第二個乘數;d要保留的小數位數(可以不傳此參數,如果不傳則不處理小數位數)
調用:Calc.Mul(arg1,arg2)
返回值:兩數相乘的結果
*/
Mul: function (arg1, arg2) {
var r1 = arg1.toString(), r2 = arg2.toString(), m, resultVal, d = arguments[2];
m = (r1.split(".")[1] ? r1.split(".")[1].length : 0) + (r2.split(".")[1] ? r2.split(".")[1].length : 0);
resultVal = Number(r1.replace(".", "")) * Number(r2.replace(".", "")) / Math.pow(10, m);
return typeof d !== "number" ? Number(resultVal) : Number(resultVal.toFixed(parseInt(d)));
},
/*
函數:除法函數,用來得到精確的除法結果
說明:函數返回較為精確的除法結果。
參數:arg1:除數;arg2被除數;d要保留的小數位數(可以不傳此參數,如果不傳則不處理小數位數)
調用:Calc.Div(arg1,arg2)
返回值:arg1除于arg2的結果
*/
Div: function (arg1, arg2) {
var r1 = arg1.toString(), r2 = arg2.toString(), m, resultVal, d = arguments[2];
m = (r2.split(".")[1] ? r2.split(".")[1].length : 0) - (r1.split(".")[1] ? r1.split(".")[1].length : 0);
resultVal = Number(r1.replace(".", "")) / Number(r2.replace(".", "")) * Math.pow(10, m);
return typeof d !== "number" ? Number(resultVal) : Number(resultVal.toFixed(parseInt(d)));
},
/*
將數值四舍五入后格式化.
@param num 數值(Number或者String)
@param cent 要保留的小數位(Number)
@param isThousand 是否需要千分位 0:不需要,1:需要(數值類型);
@return 格式的字符串,如'1,234,567.45'
@type String
調用:Calc.FormatNumber(num,cent,isThousand)
*/
FormatNumber: function formatNumber(num,cent,isThousand){
num = num.toString().replace(//$|/,/g,'');
if(isNaN(num))//檢查傳入數值為數值類型.
num = "0";
if(isNaN(cent))//確保傳入小數位為數值型數值.
cent = 0;
cent = parseInt(cent);
cent = Math.abs(cent);//求出小數位數,確保為正整數.
if(isNaN(isThousand))//確保傳入是否需要千分位為數值類型.
isThousand = 0;
isThousand = parseInt(isThousand);
if(isThousand < 0)
isThousand = 0;
if(isThousand >=1) //確保傳入的數值只為0或1
isThousand = 1;
sign = (num == (num = Math.abs(num)));//獲取符號(正/負數)
//Math.floor:返回小于等于其數值參數的最大整數
num = Math.floor(num*Math.pow(10,cent)+0.50000000001);//把指定的小數位先轉換成整數.多余的小數位四舍五入.
cents = num%Math.pow(10,cent); //求出小數位數值.
num = Math.floor(num/Math.pow(10,cent)).toString();//求出整數位數值.
cents = cents.toString();//把小數位轉換成字符串,以便求小數位長度.
while(cents.length<cent){//補足小數位到指定的位數.
cents = "0" + cents;
}
if(isThousand == 0) //不需要千分位符.
return (((sign)?'':'-') + num + '.' + cents);
//對整數部分進行千分位格式化.
for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
num = num.substring(0,num.length-(4*i+3))+','+
num.substring(num.length-(4*i+3));
return (((sign)?'':'-') + num + '.' + cents);
}
};
window.Calc = calc;
}());
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产午夜亚洲精品 | 91av在线免费播放 | 亚洲精品wwww | 久久精品一二三区白丝高潮 | 日韩做爰视频免费 | 成人富二代短视频 | 久久艹一区 | 一本色道久久综合亚洲精品小说 | 一区二区免费看 | 一级观看免费完整版视频 | 成人做爰高潮片免费视频韩国 | 欧美亚洲黄色片 | 国产一级毛片高清视频 | 国产免费一区视频 | 一级大片在线观看 | 国产色爱综合网 | 在线播放一区二区三区 | 日本免费a∨ | 国产女做a爱免费视频 | 操你啦免费视频 | 欧美一区在线观看视频 | 欧美一级毛片免费观看 | 一级片九九 | 欧美精品成人一区二区在线观看 | 色中色激情影院 | 黄色毛片免费看 | 免费在线观看国产精品 | 369看片你懂的小视频在线观看 | 欧美黄色一级片在线观看 | 成人国产精品色哟哟 | 91网站免费在线观看 | 污黄视频在线观看 | 久久精品无码一区二区三区 | 亚洲综合视频网站 | 男人的天堂毛片 | 55夜色66夜色国产精品视频 | 麻豆传传媒久久久爱 | 国产日产精品一区二区三区四区 | 亚洲一区二区三区视频免费 | 一级黄色影片在线观看 | 禁漫天堂久久久久久久久久 |