1. 程式人生 > >JS浮點數運算的處理

JS浮點數運算的處理

四捨五入

方法一:

在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>