【问题标题】:How does Microsoft Calculator, calculate such large numbers?微软计算器如何计算如此大的数字?
【发布时间】:2014-05-02 20:15:25
【问题描述】:

我最多8E10000左右,怎么计算这么大的数字,没有变量可以容纳这么大的数字。

【问题讨论】:

标签: c++ numbers calculator


【解决方案1】:

C 中的普通类型通常最多只能存储 64 位,而不是单个变量,您可以使用字符数组来存储数字的位数,并为每个运算(求和、减号等)编写函数你的程序。

你可以看看这个:GNU Multiple Precision Arithmetic Library

【讨论】:

    【解决方案2】:

    简而言之,他们不使用一个变量来保存操作数,而是使用可能保存任意长数字(如数组)的数据结构,并且他们通过考虑数字在大型 radix 系统中来评估操作.

    当您实际进行数学运算时,操作数不是变量而是数组(或任何其他合适的数据结构),您可以通过运算(如果可用)组件明智地做到这一点。

    当您想添加 2 个数组时,您选择一个基数,然后循环数组并将 op1[i] 添加到 op2[i] 然后您获取该值并检查它是否大于您的基数并计算一个回车你添加到下一个添加。

    car = (op1[i] + op2[i])%radix
    

    在选择基数和底层数据时需要小心,以免加法导致溢出。

    当您手动添加以 10 为底的数字但不考虑基数时,您也会这样做。

    您还可以查看 this 以获取 bigint 包。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-05
      • 1970-01-01
      • 1970-01-01
      • 2017-08-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多