JS浮點數運算的處理
阿新 • • 發佈:2019-01-22
四捨五入
方法一:
在JS中四捨五入的函式 toFixed(n) , n為要保留的小數位數。 n為0~20,當n超過20的時候,JS會出錯。
如果小數點前和要擷取的前一位都是0時,不會按常理擷取。
var h=0.07
h.toFixed(1)的值為0.0
其實要解決這個問題,原來是不一定要重寫js中的Number型別的toFixed方法的。
一個非常牛的同事,想到了一個他說很笨,但是我覺得很牛的方法。
JS的API上說, 擷取的位數前至少要有一位不是0的。
於是,他這個很笨卻很牛的方法是:使用toFixed方法之前加1,使用之後再減去1。
var num = 0.007;//要四捨五入的數字 var fixNum = new Number(num+1).toFixed(2);//四捨五入之前加1 var fixedNum = new Number(fixNum - 1).toFixed(2);//四捨五入之後減1,再四捨五入一下 alert(fixedNum);//彈出的數字就是正確的四捨五入結果啦
方法二:
下面的指令碼是重寫了toFixed(),這樣0.056就可以轉化到0.1了
Number.prototype.toFixed=function(len)
{
var add = 0;
var s,temp;
var s1 = this + "";
var start = s1.indexOf(".");
if(s1.substr(start+len+1,1)>=5)add=1;
var temp = Math.pow(10,len);
s = Math.floor(this * temp) + add;
return s/temp;
}
獲取小數點位數
<script> var n=3.143423423; alert(n.toString().split(".")[1].length); </script>