与えられた数の5つの連続した数の最大の積を計算するコードを書こうとしています。
私が持っているコードは、数値を配列に変換してから、配列をforループし、5つの連続する1桁の数値ごとに乗算し、最後の数値と比較しようとします。
関数を通過する数値が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の性質、使用しているコンピューター、コンパイラー、または何によるものですか?