我目前有一个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;
}
答案 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。