为什么我的数组的最后一个元素被替换为 0
Why is the last element of my array being replaced with a 0
我有一个函数:
function splitToDigits(n) {
var digits = ("" + n).split("").map(function(item) {
return parseInt(item, 10);
});
console.log(digits);
}
console.log(splitToDigits(123456784987654321));
这是返回 digits = [1,2,3,4,5,6,7,8,4,9,8,7,6,5,4,3,2,0]
。
知道为什么最后一个元素是 0
吗?我注意到当我从数组中删除 2 个元素时它正常运行。感谢所有伟大的答案! :)
正如上面评论部分中提到的 Jaromanda X,JavaScript 没有足够的精度来跟踪您传递给函数的整数中的每个数字。
要解决此问题,您应该传递一个字符串:
console.log(splitToDigits('123456784987654321'))
不过,我还想指出,您可以大大简化您的 splitToDigits
方法:
function splitToDigits(n) {
return [].map.call(n + '', Number)
}
console.log(splitToDigits('123456784987654321'))
console.log(splitToDigits(1234))
因为Javascript截断了数字
查看此内容的最佳方法是执行此操作 console.log:
function splitToDigits(n) {
console.log(n);
var digits = ("" + n).split("").map(function(item) {
return parseInt(item, 10);
});
}
那么,当你运行: splitToDigits(123456784987654321)
时,你已经得到了123456784987654320。所以,它与你的代码无关,因为你还没有处理它。
如果您添加数字,它将变为科学记数法:
splitToDigits(1234567849876543211521521251) // turns to 1.2345678498765432e+27
这是一个 Javascript 精度问题。就这样:)
我有一个函数:
function splitToDigits(n) {
var digits = ("" + n).split("").map(function(item) {
return parseInt(item, 10);
});
console.log(digits);
}
console.log(splitToDigits(123456784987654321));
这是返回 digits = [1,2,3,4,5,6,7,8,4,9,8,7,6,5,4,3,2,0]
。
知道为什么最后一个元素是 0
吗?我注意到当我从数组中删除 2 个元素时它正常运行。感谢所有伟大的答案! :)
正如上面评论部分中提到的 Jaromanda X,JavaScript 没有足够的精度来跟踪您传递给函数的整数中的每个数字。
要解决此问题,您应该传递一个字符串:
console.log(splitToDigits('123456784987654321'))
不过,我还想指出,您可以大大简化您的 splitToDigits
方法:
function splitToDigits(n) {
return [].map.call(n + '', Number)
}
console.log(splitToDigits('123456784987654321'))
console.log(splitToDigits(1234))
因为Javascript截断了数字
查看此内容的最佳方法是执行此操作 console.log:
function splitToDigits(n) {
console.log(n);
var digits = ("" + n).split("").map(function(item) {
return parseInt(item, 10);
});
}
那么,当你运行: splitToDigits(123456784987654321)
时,你已经得到了123456784987654320。所以,它与你的代码无关,因为你还没有处理它。
如果您添加数字,它将变为科学记数法:
splitToDigits(1234567849876543211521521251) // turns to 1.2345678498765432e+27
这是一个 Javascript 精度问题。就这样:)