在C#中,我们经常需要表示整数。但是,c#的基本数据类型中,最大的long也只能表示-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807之间的数。

如果我们需要表示更大的数,就需要用到一定的算法来完成。

这次,我给大家分享一下C##的大数运算之加法。

代码只考虑了正数的整数加法。

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("请输入第一个加数");
string oneNum = Console.ReadLine();
Console.WriteLine("请输入第二个加数");
string twoNum = Console.ReadLine(); string result = TwoBigNumAdd(oneNum, twoNum);
Console.WriteLine(result);
} static string TwoBigNumAdd(string a, string b)
{
int k = ;
List<int> array = new List<int>();
List<int> one = new List<int>();
List<int> two = new List<int>(); //将两个数处理成相同长度的字符串,短的小的数字前面补0
for (int i = ; i < (a.Length > b.Length ? a.Length : b.Length); i++)
{
if (i >= a.Length)
one.Insert(i - a.Length, );
else
one.Add(int.Parse(a[i].ToString()));
if (i >= b.Length)
two.Insert(i - b.Length, );
else
two.Add(int.Parse(b[i].ToString()));
} //array集合用于存储相加的和,所以长度最大也只会比最大的数长度长1,刚开始全部存0
for (int i = ; i <= (a.Length > b.Length ? a.Length : b.Length); i++)
{
array.Add();
} //从低位往高位每位开始相加,如果相加 >=10 则进1取余
for (int i = (a.Length > b.Length ? a.Length : b.Length) - ; i >= ; i--)
{
array[i + ] += (one[i] + two[i]) % ;
k = (one[i] + two[i]) / ; array[i] += k;
} //如果首位为0,则移除
if (array[] == )
{
array.RemoveAt();
} //将集合转换成字符串返回
StringBuilder result = new StringBuilder();
for (int i = ; i < array.Count; i++)
{
result.Append(array[i]);
}
return result.ToString();
}
}
}

最新文章

  1. phpstudy 安装选择,iis+php组合,如何设置伪静态
  2. rac 11g_第二个节点重启后无法启动实例:磁盘组dismount问题
  3. Oracle排序BUG
  4. Bind Enum to ListControl
  5. 【HDOJ】1421 搬寝室
  6. c++,派生类对象可以对基类赋值,基类对派生类不可以赋值
  7. LinuxDLL加载优化方案
  8. Zabbix概念、安装以及快速入门
  9. hdu_5690_All X(找循环节)
  10. .NET Core迁移技巧之web.config配置文件
  11. 【BZOJ5020】【THUWC2017】在美妙的数学王国中畅游(Link-Cut Tree,组合数学)
  12. VScode快捷键、Chrome快捷键知识小总结和状态码
  13. Unique Paths leetcode java
  14. 安装XP时BIOS的设置(ahci ide)
  15. jmeter处理带表单的接口请求
  16. ListView GridViewColumn.CellTemplate
  17. 转悠望南山 Python闲谈(二)聊聊最小二乘法以及leastsq函数
  18. POJ 1637 Sightseeing tour(混合图欧拉回路+最大流)
  19. 3、Python文件操作工具 xlwt 工具
  20. iOS之estimatedHeightForRowAtIndexPath避免程序EXC_BAD_ACCESS

热门文章

  1. 【Android】20.1 音频播放
  2. F1 P R的理解
  3. cocos2d-xV3.0rc 环境搭建
  4. my.cnf 配置详解
  5. DMA2D 图形加速器简介
  6. iOS 键盘处理(改变键盘为完成键),UITextField键盘显示隐藏,弹出,回弹
  7. 【Unity】使用SceneManager加载/切换场景
  8. Wireshark 分析捕获的数据记录
  9. [log]利用logrotate对Linux log进行管理
  10. 服务器不装Excel读取Excel并转换DataTable