【问题标题】:Jquery, how to work with high numbersJquery,如何处理高数字
【发布时间】:2018-06-19 20:55:56
【问题描述】:

我需要验证一些 22 个字符长的整数。我需要除以那个数字并得到商以及占卜的余数。但是,当我将它发送到模函数时,它返回 7.04406000774059e+21

labas = modulo(7044060007740589212932, 97);
function modulo (divident, divisor){
alert(divident);
}

【问题讨论】:

标签: jquery numbers


【解决方案1】:

有几个库用于处理 js 中的大数字:

【讨论】:

    【解决方案2】:

    我认为您的意思是 divide(不是“神圣的”)和 remainder(不是“bad part”)。
    我掷了一些有趣的骰子得到一个随机数 (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 中处理数字时,您必须记住只有前 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
    

    你去吧。

    【讨论】:

      猜你喜欢
      • 2011-05-27
      • 1970-01-01
      • 1970-01-01
      • 2014-03-07
      • 2018-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-21
      相关资源
      最近更新 更多