2011-02-01 55 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);