当前位置: 代码迷 >> JavaScript >> Javascript二进制转换器随着数字增加而失去准确性
  详细解决方案

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

热度:92   发布时间:2023-06-13 11:27:36.0

我最近创建了一个程序,将二进制数字符串转换为十进制数字。 似乎工作正常,直到字符串长度达到大约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的浮点数精度引起的。 请参阅 欲获得更多信息。

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

console.log(numString);//"1011010110100101000" notice the missing 1 on the right
  相关解决方案