收藏
回答

超大整数的加法运算疑似存在bug

框架类型 问题类型 操作系统 操作系统版本 手机型号 微信版本
小程序 Bug Android 所有版本 所有型号 不详

函数:

//======================testbug============================

function testlint() {

    var lint=1;

    for(var i=1;i<=22;i++)

    {

        lint=lint*10+1;

        console.log("round"+i+",lint="+lint);

    }

}

我实验超大整数在乘法过程中并无问题,每次乘以10尾部加一个0.

但是位数较高的整数加法时好像有BUG,类似于加法竖式没有从个位对齐。

运行结果:注意,第16轮开始异常。

round1,lint=11

round2,lint=111

round3,lint=1111

round4,lint=11111

round5,lint=111111

round6,lint=1111111

round7,lint=11111111

round8,lint=111111111

round9,lint=1111111111

round10,lint=11111111111

round11,lint=111111111111

round12,lint=1111111111111

round13,lint=11111111111111

round14,lint=111111111111111

round15,lint=1111111111111111

round16,lint=11111111111111112

round17,lint=111111111111111120

round18,lint=1111111111111111200

round19,lint=11111111111111110000

round20,lint=111111111111111110000

round21,lint=1.1111111111111111e+21

round22,lint=1.1111111111111111e+22


回答关注问题邀请回答
收藏

1 个回答

  • 金煜峰
    金煜峰
    2019-11-04

    javascript 中最大安全整数是2^53-1(-9007199254740991~9007199254740991)

    可以通过 Number.MAX_SAFE_INTEGER Number.MIN_SAFE_INTEGER 获取

    超过这个值可以计算但不精确


    2019-11-04
    有用 1
    回复 1
    • 于成
      于成
      2019-11-05
      多谢了,明白了是JS的问题,而且网上有专门解决这个问题的算法。换成字符串分段计算
      2019-11-05
      回复
登录 后发表内容
问题标签