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

formatNumber function fails in IE8 showing 3.3500.3500000 instead of 3.500.000

本文关键字:3500000 3500 显示 函数 IE8 失败 formatNumber      更新时间:2023-09-26

我目前有一个formatNumber函数,它接受一个数字并应用一些小数。除了IE8,它对我来说都很好用。

下面的例子由于某些原因打印出:3.3500.3500000在IE8中而不是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;
}

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

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

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

Q知道这里可能失败的是什么吗?

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

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