在 Javascript 中比较大数字

Was*_*eem 8 javascript math int comparison-operators

我有两个要比较的数字。以下示例中的数字是26^26在两个不同系统中计算的结果。其中之一是我的 JavaScript 代码。

然而,当比较这两个数字时,我最终得到这样的结果:

AssertionError [ERR_ASSERTION]: 4.0329146112660565e+26 == 4.0329146112661e+26
Run Code Online (Sandbox Code Playgroud)

它们显然不相等,但理论上它们应该相等。

在javascript中对大数执行相等的正确方法是什么(即使它是近似值)?

Dan*_*ord 1

var a = 4.0329146112660565e+26;

var b = 4.0329146112661e+26;

a = Math.round(a/10e+20)*10e+20

b = Math.round(b/10e+20)*10e+20

a == b;
Run Code Online (Sandbox Code Playgroud)