【发布时间】:2023-03-26 12:04:01
【问题描述】:
我试图理解为什么模运算不能按预期工作:
我需要验证一个 IBAN,算法包括做一个模数。
根据维基百科: enter link description here
3214282912345698765432161182 mod 97 = 1
根据我的 Windows 计算器 :: 3214282912345698765432161182 mod 97 = 1
但是当我在 JS 中执行此操作时,我得到 65:
var result = 3214282912345698765432161182 % 97;
console.log(result);
// result is 65
为什么我在 JS 中得到 65 而不是 1?
【问题讨论】:
-
这是一个非常大的数字,我认为你已经溢出了。
-
是的,那是一个 92 位的数字。您将需要比原始数字类型更高级的东西...
-
试试
console.log(3214282912345698765432161182)...你处于浮动的领域,你不能指望一个“正确”的结果。 -
Javascript 数字只有 56 位精度。
-
请参阅IBAN Validation check 了解一些替代实现。
标签: javascript