<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script>
/**
*JavaScript在處理小數的時候會存在不準確的問題;
解決的方法可以是:將小數變爲整數來處理。
https://www.jb51.net/article/47803.htm
*/
/**
* https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Math/pow
Math.max(value1[,value2, ...])
參數:value1, value2, ...一組數值
返回值:返回給定的一組數字中的最大值。
如果給定的參數中至少有一個參數無法被轉換成數字,則會返回 NaN。
如果沒有參數,則結果爲 - Infinity
Math.pow() 函數返回基數(base)的指數(exponent)次冪;
Math.pow(base, exponent) 表示base的exponent次方;
參數:base基數;exponent 指數;
如果 base 是 2 ,且 exponent 是 7,
則 Math.pow() 函數返回 128 (2 的 7 次冪)
*/
/**
* 加法
* 計算方式:1.先將所有的小數乘爲整數;
2.待加減運算執行完之後再除去對應的 m 的值,將其變爲小數輸出;
* */
function accAdd(arg1,arg2){
var r1,r2,m;
//獲取arg1,arg2的小數點後的長度;
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 m.div(parseFloat(arg1).mul(m)+parseFloat(arg2).mul(m))
**/
return (arg1*m+arg2*m)/m;
}
/**
* 給Number類型增加一個add方法,調用起來更加方便。
*
* */
Number.prototype.add = function (arg){
return accAdd(arg,this);
}
/**
* 減法
**/
function accsub(arg1,arg2){
return accAdd(arg1,-arg2);
}
/**
* 乘法
* */
function accMul(arg1,arg2){
var m=0,s1=arg1.toString(),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)
}
/**
* 給Number類型增加一個mul方法,調用起來更加方便。
**/
Number.prototype.mul = function (arg){
return accMul(arg, this);
}
/**
* 除法
* */
function accDiv(arg1,arg2){
var t1=0,t2=0,r1,r2;
try{
t1=arg1.toString().split(".")[1].length;
}catch(e){}
try{
t2=arg2.toString().split(".")[1].length;
}catch(e){}
with(Math){
r1=Number(arg1.toString().replace(".",""))
r2=Number(arg2.toString().replace(".",""))
return (r1/r2)*pow(10,t2-t1);
}
}
/**
* 給Number類型增加一個div方法,調用起來更加 方便。
* */
Number.prototype.div = function (arg){
return accDiv(this, arg);
}
/**
* toFixed()實現方法可把 Number 四捨五入爲指定小數位數的數字。
* */
Number.prototype.toFixed=function(len){
var tempNum=0;
var s;
var s1=this+"";
var start=s1.indexOf(".");
if(s1.substr(start+len+1,1)>=5){
tempNum=1
}
var temp=Math.pow(10,len);
s=Math.floor(Math.round(this*temp));
return s/temp
};
/**
* https://blog.csdn.net/luxxxx/article/details/90177682
*/
/**
* trim() 方法用於刪除字符串的頭尾空格
* \s匹配任何不可見字符,包括空格、製表符、換頁符等等。
* 等價於[ \f\n\r\t\v]
* \f: 匹配一個換頁符。等價於\x0c和\cL。
* \n: 匹配一個換行符。等價於\x0a和\cJ。
* \r: 匹配一個回車符。等價於\x0d和\cM。
* \t: 匹配一個製表符。等價於\x09和\cI。
* \v: 匹配一個垂直製表符。等價於\x0b和\cK。
* */
String.prototype.trim=function(){
return this.replace(/(^\s*)|(\s*$)/g,"")
};
//https://www.cnblogs.com/xinggood/p/6639022.html
console.log("JS加法(0.1+0.2):"+(0.1+0.2));
var sum=0.1.add(0.2);
console.log("處理過的結果:"+sum);
console.log("JS減法(0.3-0.1):"+(0.3-0.1));
console.log("處理後的結果:"+accsub(0.3,0.1));
console.log("JS乘法(8.80*12):"+(8.80*12));
console.log("處理後的結果:"+8.80.mul(12));
console.log("JS除法"+(100/2));
/**此處需要轉型原因待研究**/
console.log("處理後的結果:"+parseFloat(100).div(parseFloat(2)));
//trim();
var str=" wang tao ";
console.log(str.trim());
console.log(" hello world ".trim());
//toFixed()
console.log(57.4553.toFixed(3));
</script>
</head>
<body>
</body>
</html>