【问题标题】:How do i handle arithmetic overflows ?我如何处理算术溢出?
【发布时间】:2012-11-02 14:11:34
【问题描述】:

我试图弄清楚如何处理两个非常大的整数的加法、减法、乘法和除法溢出。任何反馈/输入将不胜感激。有谁知道这方面的任何算法和/或我可以参考的来源?

(我在发帖前做过研究,只是不知道如何解决这个问题)

编辑:对于两个非常大的整数

【问题讨论】:

  • 句柄是什么意思?抛出错误,返回某个数字(例如 0),或者使用更大的数字以免溢出?
  • 您使用的是哪个大数字库?检查文档
  • 澄清一下:您是在问“我怎么知道(浮点)加法/减法/乘法/除法运算何时会溢出,以及处理这种情况的常用方法是什么? "
  • 当你添加两个非常大的数字时会出现溢出,所以我问你将如何处理这个问题。那是更清晰的吗?
  • @Serdalis 通过溢出我的意思是处理它,所以它不会越界。好吧,假设我会有分数。 2/3 + 1/2 是一个例子,现在假设分子有非常大的数字,并且您正在添加它们,您将如何处理以防止溢出?

标签: c++ overflow arithmetic-expressions


【解决方案1】:

如果要避免发生溢出的情况,一种方法是使用链表存储数字的部分,然后对部分进行单独计算,并在链表中添加更多节点来处理多余的数字需要时。

例子

1234567890 可以存储为 -> 12,34,56,78,90 相乘时,每个单元将相乘并转移到下一个单元 -> 1,23,45,67,89,0

但请记住,将其划分为个位数单位更容易,例如 1,2,3,4,5 而不是 1,23,45,因为这会使操作更简单。

编辑::“句柄”这个词不是你应该使用的词

【讨论】:

    【解决方案2】:

    因为整数除以整数很少是整数,所以一般来说这是不可能的。

    也就是说,这就是我认为你想要的: http://gmplib.org/

    它处理任意大小的整数和有理数。

    【讨论】:

      【解决方案3】:
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多