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