2011-02-01 53 views
9

權我有我使用從字符串刪除不需要的字符(定義爲貨幣符號)則返回值作爲一個數的函數停止parseFloat()。當返回值,我做以下電話:如何從剝離到零小數

return parseFloat(x);

我的問題是,當x ==「0.00」我期望能獲得0.00(含兩位小數的浮動)回來。我所得到的,而不是僅僅是0

我也試過如下:

return parseFloat(x).toFixed(2);

,仍然可以得到簡單的0回來。我錯過了什麼嗎?任何幫助將不勝感激。

謝謝!

回答

4

簡單:

function decimalPlaces(float,length) { 
    ret = ""; 
    str = float.toString(); 
    array = str.split("."); 
    if(array.length==2) { 
    ret += array[0] + "."; 
    for(i=0;i<length;i++) { 
     if(i>=array[1].length) ret += '0'; 
     else ret+= array[1][i]; 
    } 
    } 
    else if(array.length == 1) { 
    ret += array[0] + "."; 
    for(i=0;i<length;i++) { 
     ret += '0' 
    } 
    } 

    return ret; 
} 

document.write(decimalPlaces(3.123,6)); 
10

這應該工作:

return parseFloat(x).toFixed(2); 

您可以通過在Firebug運行這個測試:

var x = '0.00'; 
alert(parseFloat(x).toFixed(2)); 
+0

沒有OP說他試過了,並沒有奏效? – 2011-02-01 22:16:15

+0

@Ted霍普 - 無論什麼樣的OP狀態,我已經在IE 8試了一下,Safari瀏覽器,螢火蟲和Chrome JS控制檯,我給維克多+1這一點,因爲它是正確的,至少據我可以測試。 – jball 2011-02-01 22:17:55

+0

@jball - 我同意......它應該可以工作,但事實並非如此。我希望以前有人看到過類似的行爲,並且可以讓我知道爲什麼不行。 – user599144 2011-02-01 22:23:28

7

parseFloat()把一個字符串轉換成浮點數。這是一個二進制值,而不是十進制表示,所以小數點右邊的零數的概念甚至不適用;這一切都取決於它如何格式化成字符串。關於toFixed,我建議浮點數轉換爲數字:

new Number(parseFloat(x)).toFixed(2);