gpt4 book ai didi

Javascript 二进制转换器随着数字的增加而失去准确性

转载 作者:行者123 更新时间:2023-11-29 15:34:04 25 4
gpt4 key购买 nike

我最近创建了一个将二进制数字符串转换为十进制数的程序。它似乎工作正常,直到字符串的长度达到大约 15 位左右,然后它开始偏离大约 1 或 2 个位置(即 1011010110100101001 返回 372008 而不是 372009)。一旦字符串达到 20 位左右,它就返回 NaN。对发生的事情有什么想法吗?

function binaryConverter2(num) {
var numString = num.toString(),
total = 0,
i = numString.length-1,
j = 1;

while(i >= 0) {
total += (numString[i] *j);

j = j*2;
i --;
console.log(total);
}

return total;
}

最佳答案

问题是由 JavaScript 的 float 精度引起的。参见 How to deal with floating point number precision in JavaScript?获取更多信息。

我已经为你的函数创建了一个 jsbin 版本,它显示错误发生是因为你发送的 float 大于浮点精度可以准确存储,然后将其转换为字符串。如果您不考虑二进制数,而考虑 1011010110100101001 所表示的十进制数,那么您会发现这是一个非常大的数。

http://jsbin.com/heluyut/1/edit?js,console

console.log(numString);//"1011010110100101000" notice the missing 1 on the right

关于Javascript 二进制转换器随着数字的增加而失去准确性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31469494/

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