gpt4 book ai didi

javascript - 我是如何打败 Javascript 计算器的?

转载 作者:行者123 更新时间:2023-11-30 12:53:14 24 4
gpt4 key购买 nike

我创建了 following code用我在小学学到的方法计算数字乘以 11:

function multiplyby11(number) {
var num = number + "";
var integers = num.split('');
var numbers = [];
integers.forEach(function (val) {
numbers.push(parseInt(val));
});
var multiply = [];
multiply.push(numbers[0]);
var number_length = numbers.length;
for (var i = 1; i < number_length; ++i) {
multiply.push(numbers[i] + numbers[i - 1])
}
multiply.push(numbers[number_length - 1]);

function removeAllMultiplesOfTen() {
var allRemoved = true;
multiply.forEach(function (val, index) {
if (val >= 10) {
val -= 10;
multiply[index - 1]++;
multiply[index] = val;
allRemoved = false;
}
});
if (!allRemoved) {
removeAllMultiplesOfTen();
}
}

removeAllMultiplesOfTen();
return multiply.join('');
}

如果我输入像 15487548796454858 这样的数字,我的代码会返回

170363036761003438

但如果我只是对 15487548796454858 * 11 进行简单的 javascript 计算,它会返回:

170363036761003420

这是完全不正确的。

我是不是在 javascript 中遇到了某种数字溢出,或者我错过了什么?

最佳答案

在 Javascript 中,数字是 double float 。

这意味着精度约为 15 位。由于您的计算有 18 位数字,因此只有前 15 位是正确的。

关于javascript - 我是如何打败 Javascript 计算器的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20248038/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com