javaScript中的数学

javaScript中的数学,javascript,math,largenumber,Javascript,Math,Largenumber,我正在做一个可以处理大数(最多2^900)的算法,但是很多运算仍然不是那么大。在这种情况下,我想做普通的数学,而不是大数的算法。 我有这样一部分代码: if (a * b < 1e17) { return(a * b); } else { //some large numbers maths return(res); } 是,此代码将正常工作。JavaScript中的数字数据类型不会像某些其他

我正在做一个可以处理大数(最多2^900)的算法,但是很多运算仍然不是那么大。在这种情况下,我想做普通的数学,而不是大数的算法。 我有这样一部分代码:

    if (a * b < 1e17)
    {
        return(a * b);
    }
    else
    {
        //some large numbers maths
        return(res);
    }

是,此代码将正常工作。JavaScript中的数字数据类型不会像某些其他编程语言中的数字数据类型那样出现“环绕”问题,计算可能溢出并产生完全错误的结果


数字数据类型的精度有限,因为它存储在固定数量的内存中。数字数据类型仅精确到大约16位有效数字。例如,将两个数字与10个有效数字相乘并不能得到一个具有20个正确有效数字的数字:只有前16或17个数字是正确的。

JavaScript中使用
number
可以表示的最大整数值是(2^53-1)。但是如果我尝试计算一个大于该数值的数字,会发生什么?我能检测到这一点并决定,对于这些精确的数字,我必须使用什么乘法算法:普通*还是大数?如果你的数字是整数,现代JavaScript有
BigInt
类型:啊。。非常感谢)我不知道
    if (a * b < 1e17)
    {
        return(a * b);
    }
    else
    {
        //some large numbers maths
        return(res);
    }