C#大正整数的数学算法(加法)

第一次在CSDN写文章,写的不好。请大家多多指教。

在C#程序中我们有时候可能会遇到连Long这样的数据类型都无法装下的数据,这个时候可能我们的数学加减法运算就无法进行了!比如:54545555555555545454665+4645465464646446=?,这个时候就要采用其他的方法来实现数学计算,在C#程序中基本上所有的数据类型都是限制了长度的,只有String类型可以无限制长度,当然数组也是没有长度限制的。。所以我们就可以考虑用String类型来进行计算,这个时候就要借用数组来共同完成这个任务,废话不多说,说下基本思路,先将两个数分别用数组把每一位存下来,然后再用数组每一位上的数想加。最后再还原成一个字符串。。整个运算过程就算完成了!“加发运算时注意进位”

下面贴上方法代码:

public static string Add(string num1, string num2) { //获取长度 int num1Length = num1.Length; int num2Length = num2.Length; int highCount = num1Length; if (num1Length < num2Length) { highCount = num2Length; } //定义数组 int[] Nums1 = new int[highCount+1]; int[] Nums2 = new int[highCount+1]; //对数组进行赋值 for (int i = 0; i < highCount+1; i++) { if (num1.Length-i<1) { Nums1[i] = 0; } else { Nums1[i] = int.Parse(num1.Substring(num1.Length-1 - i, 1)); } if (num2.Length-i<1) { Nums2[i] = 0; } else { Nums2[i] = int.Parse(num2.Substring(num2.Length -1- i,1)); } } //定义运算后的数组 int [] Result = new int[highCount+1]; //计算 for (int i = 0; i 9) { Result[i] -= 10; Result[i + 1] = 1; } } //将数组换成正常顺序 string []temp=new string[highCount+1]; for (int i = 0; i < Result.Length; i++) { temp[i] = Result[Result.Length - i - 1].ToString(); } string Sum = String.Join("",temp); //判断第一位是否为0,如果为0则去掉0 if (Sum.Substring(0,1).Equals("0")) { Sum = Sum.Substring(1,Sum.Length-1); } return Sum; }

还有减法和乘法都差不多。。只有除法有点不一样。这里就不多做介绍了。

你可能感兴趣的:(C#大正整数的数学算法(加法))