作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我创建了 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/
我是一名优秀的程序员,十分优秀!