JavaScript 中的大整数加法有问题
Having an issue with large integer addition in JavaScript
我正在编写一个非常简单的程序,将二进制数转换为十进制数,反之亦然。在进行十进制到二进制的转换时,我意识到当我尝试将一个小数加到一个非常大的数时 运行 遇到了一个奇怪的错误。例如,我会给我的程序输入 220002 作为十进制数,它会将该数字转换为二进制数 110101101101100020。在调试时,我意识到最后它做了 110101101101100000 + 10,结果是 110101101101100020。
我很困惑为什么会这样。我不太确定,帮助将不胜感激。它也用较小的数字来做,例如有时它会以二进制形式做一个大数字 + 1 它根本不会改变二进制数。如果有帮助,这是我的代码。
$("#convertDecimalBinary").on("click", function() {
var decimal = $("#inputDecimal").val();
console.log(!isNaN(decimal));
if(!isNaN(decimal)) {
var binary = 0;
var multiplier = 1;
var num = 1;
while(num * 2 <= decimal) {
num *= 2;
multiplier *= 10;
}
while(decimal > 0) {
if(decimal - num >= 0) {
decimal -= num;
binary += multiplier;
}
num /= 2;
multiplier /= 10;
}
$("#inputBinary").val(binary);
}
})
参见float64、This gives 15–17 significant decimal digits precision.
。您的号码有 18 位数字。
我正在编写一个非常简单的程序,将二进制数转换为十进制数,反之亦然。在进行十进制到二进制的转换时,我意识到当我尝试将一个小数加到一个非常大的数时 运行 遇到了一个奇怪的错误。例如,我会给我的程序输入 220002 作为十进制数,它会将该数字转换为二进制数 110101101101100020。在调试时,我意识到最后它做了 110101101101100000 + 10,结果是 110101101101100020。
我很困惑为什么会这样。我不太确定,帮助将不胜感激。它也用较小的数字来做,例如有时它会以二进制形式做一个大数字 + 1 它根本不会改变二进制数。如果有帮助,这是我的代码。
$("#convertDecimalBinary").on("click", function() {
var decimal = $("#inputDecimal").val();
console.log(!isNaN(decimal));
if(!isNaN(decimal)) {
var binary = 0;
var multiplier = 1;
var num = 1;
while(num * 2 <= decimal) {
num *= 2;
multiplier *= 10;
}
while(decimal > 0) {
if(decimal - num >= 0) {
decimal -= num;
binary += multiplier;
}
num /= 2;
multiplier /= 10;
}
$("#inputBinary").val(binary);
}
})
参见float64、This gives 15–17 significant decimal digits precision.
。您的号码有 18 位数字。