我需要验证一些整数,这是22个字符长。我需要除以这个数字,得到商以及占卜的其余部分。但是,当我将它发送到模块化函数时,它会返回7.04406000774059e+21
labas = modulo(7044060007740589212932, 97);
function modulo (divident, divisor){
alert(divident);
}发布于 2016-12-12 03:29:38
我认为你指的是除法(不是“神圣”)和余数(不是“坏部分”)。
我掷了一些有趣的骰子,得到一个随机数(8233),我将用它作为一些例子。
*当您将8233除以8时,其余的为1. 8233 = (8 * 1029) + 1。
*当您将8233除以9时,其余的为7。
*当您将8233除以10时,其余的为3。8233 = (10 * 823) + 3
*当您将8233除以11时,其余的为5。
回答你的问题:
在处理JavaScript中的数字时,您必须记住,只有前15位或16位才是好的。如果数字有更多的数字,结果通常是不准确的。
您的示例使用了这个数字:7044060007740589212932 JavaScript无法准确处理该数字。它能做的最好的就是7044060007740589735936,它的523004太高了。但你不想要7044060007740589735936,你想要7044060007740589212932。
以下是一个解决办法:
把你的号码保持为字符串,而不是数字。
"7044060007740589212932"
然后把绳子分成两部分,中间。
"70440600077"和"40589212932"
现在有两个字符串,每个字符串包含11位数字。
然后这样做:
parseInt("70440600077", 10)给你号码70440600077
(70440600077 % 97)给你号码36
注意(97 * 726191753) + 36 = 70440600077
然后使用36并执行以下操作:
(36 + "40589212932")为您获取字符串"3640589212932"
(一个数字加一个字符串做一个字符串连接。) parseInt("3640589212932", 10)为您获取数字3640589212932 (3640589212932 % 97)为您获取数字0,这是您的最终结果。请注意,97 * 37531847556 = 3640589212932确实是。
72619175300000000000 * 97 = 7044060004100000000000
37531847556 * 97 = 3640589212932
==================== ======================
72619175337531847556 * 97 = 7044060007740589212932然后就到了。
https://stackoverflow.com/questions/15269653
复制相似问题