Jquery,如何使用高数字
我需要validation一个22个字符长的整数。 我需要除去这个数字并获得商数和余数。 但是,当我将它发送到模数函数时,它返回7.04406000774059e + 21
labas = modulo(7044060007740589212932, 97); function modulo (divident, divisor){ alert(divident); }
在js中有几个用于处理大数字的库:
- biginteger (和描述 )
- bignumber
- jsbn
- BIGNUM
我认为你的意思是分 (不是“神”)和余数 (不是“坏部分”)。
我掷了一些有趣的骰子得到一个随机数(8233),我将用它作为一些例子。
*当您将8233除以8时,余数为1. 8233 = (8 * 1029) + 1
*当您将8233除以9时,余数为7. 8233 = (9 * 914) + 7
*当您将8233除以10时,余数为3. 8233 = (10 * 823) + 3
*当您将8233除以11时,余数为5. 8233 = (11 * 748) + 5
回答你的问题:
在处理JavaScript中的数字时,您必须记住只有前十五或十六位数字是好的。 如果数字有更多数字,结果通常不准确。
您的示例使用此数字: 7044060007740589212932
JavaScript无法准确处理该数字。 它能做的最好的是7044060007740589735936
,这个523004
太高了523004
。 但是你不想要7044060007740589735936
,你想要7044060007740589212932
。
这是一个解决方法:
将您的号码保留为字符串 ,而不是数字。
"7044060007740589212932"
然后将琴弦分成两部分,就在中间。
"70440600077"
和"40589212932"
现在你有两个字符串,每个字符串包含十一个数字。
然后这样做:
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
你去吧