C++ 上的整数溢出以及如何添加大数字
integer overflow on c++ and how to add big numbers
我正在编写一个包含非常大数字的问题。我在如何处理整数溢出方面遇到问题。当我添加多个大数字时,我得到一个负数。我该如何处理?我的数据类型也是
unsigned long long p=0;
我该怎么做才能保持正值并继续添加?
有很多方法可以做到这一点。您可以使用boost的多精度库,该库可以存储128位变量。
如果您不想安装其他库,则始终可以在数组中表示变量,其中每个元素都是变量的一个数字。
如果你不介意失去一些精度,你可以使用像双精度(或长双精度)这样的东西,它可以容纳任意大的数字。由于您使用的是长长,听起来保持完美准确性的唯一选择是使用实现这一点的库或自己编写一个,其中较大的数字必须保存在另一个表示这些较大数字的长长中,并且数学运算必须考虑存储大于长长的值。
来自 hiranmay_ghosh@yahoo.com
使用随机数字编写长数生成器。然后生成一个 120 位和 135 位 inpu。
用输入 = 数字 1 和数字 2从长数字 1 和 2 写一个数字加法器函数。并从上次执行最后一次执行。
现在从每个输入中读取一个数字并将其传递给上面的函数,直到所有数字完成。从数字加法器生成的串联总和数字。
这是最简单但不高效的算法
来自 hiranmay_ghosh@yahoo.com
您可以利用数据类型 int。这可以处理任何 9 位数字。
现在编写一个 int 加法器函数。然后一次从输入和执行的其余部分读取 9 位数字
进位将为 0 或 1。如果 s> 9,则设置 Carry =1,其中 s=n1+n2+c1
我们可以使用完全非数值的方法。只需将所有数字视为符号即可。
案例 $n 1 in0) 案例 $n 2 in0) 案例 $c 1 in0) s=0;c=0;;1) s=1;c=0;;埃萨克;;1) 案例 $c 1 in0) s=1;c=0;;1) s=2;c=0;;埃萨克;;2) 三xxx3) xxxx4) xxxx5) xxxx6) xxxx7) xxxx8) 案例 $c 1 in0) s=8;c=0;;1) s=9;c=0;;埃萨克;;9) 案例 $c 1 in0) s=9;c=0;;1) s=0;c=1;;埃萨克;;埃萨克;;1) 案例 $n 2 in0) 案例 $c 1 inxxxxxxxx
虽然该函数的这段代码超过 400 行,但每个循环只会执行 5-6 行代码。我建议测量此代码的性能。
请随时联系以获取更多详细信息。
- 我需要知道如何在 c++ 中使用增量值添加到一定数字
- 将随机生成的数字添加到数组 + 对这些数组求平均值
- 在不添加进位的情况下添加数字的C++程序
- 将两个数字添加为链表
- C++:添加到输出中的不需要的数字
- 如何非常快速地将数字添加到 Vector 中的一系列元素中
- 如何在 c++ 中添加两个大的双精度数字
- 字符串添加数字 C++
- Arduino代码无法正确添加数字
- 如何从 while 循环中添加数字
- 在我的输出之前,我该如何添加数字
- C 如何结束一个段循环,该循环添加数字而不使用数字作为触发器来结束循环
- 无法理解为什么在添加数字后在末尾添加零
- C++输入文件添加数字
- 如何创建添加数字的模板函数
- 向字符串数组中的元素添加数字值
- 重载运算符>>并向字符串添加数字
- 如何在矩阵中添加数字以产生最小结果
- 在fstream中添加数字(c++)
- g++ -D选项添加数字1