我正在尝试编写一个代码来计算给定数字中 5 个连续数字的最大乘积。
我尝试将数字转换为数组的代码,然后循环遍历数组,将每 5 个连续的单个数字相乘并将其与最后一个数字进行比较。
一旦我通过函数的数字超过 21 位,我猜计算机会将数字转换为科学计数法,这会导致整个函数关闭。
这是代码,它在 21 位上运行良好:
function func(value){
var number = value;
console.log(number);
var output = [];
sNumber = number.toString();
console.log(sNumber);
for (var i = 0; i < sNumber.length; i++) {
output.push(+sNumber.charAt(i));
}
console.log(output);
var productToCompare;
var largerProduct = 0;
for (var j = 0; j < output.length - 4; j++) {
productToCompare = output[j]*output[j+1]*output[j+2]*output[j+3]*output[j+4];
console.log(productToCompare);
if (productToCompare > largerProduct) {
largerProduct = productToCompare;
}
}
return largerProduct;
}
func(13245678901234567890);
当我添加另一个数字时:
func(123465789012345678901);
它开始使用科学计数法。
这是由于 Javascript 的性质、我使用的计算机、编译器还是什么?