formatNumber函数在IE8中失败,显示3.3500.3500000而不是3.500.000

时间:2014-05-08 19:51:10

标签: javascript substring

我目前有一个formatNumber函数,它接受一个数字并应用一些小数。 除了IE8之外,它正在为我工​​作。

以下示例由于某种原因打印出来:IE8中的 3.3500.3500000 ,而不是 3.500.000

关于什么可能失败的任何想法?

 function formatNumber(3500000)
{
    var numString = myNum.toString();
    var result = '';

    while (numString.length > 3)
    {
        var chunk = numString.substr(-3);
        numString = numString.substr(0, numString.length - 3);
        result = '.' + chunk + result;
    }

    if (numString.length > 0)
    {
        result = numString + result;
    }

    return result;
}

2 个答案:

答案 0 :(得分:1)

你知道这里可能会失败吗?

A 我认为IE8 javascript 支持负值作为substr方法的参数。我认为这是问题的根源。

也就是说,第一次通过循环,substr(-3)被解释为substr(0),结果是你得到整个字符串,而不是字符串的最后三个字符。这解释了你所看到的结果。

答案 1 :(得分:1)

var chunk = numString.substr(-3);更改为

var chunk = numString.substr(numString.length - 3, 3);

并在参数列表中将3500000更改为myNum。