C#实现数字字符串的加法和自增运算
2013-05-12 23:51
211 查看
使用方式如下:
使用方式如下:
public class StringNumCalc { private string stringNumber; /// <summary> /// 字符串数字 /// </summary> public String StringNumber { get { return this.stringNumber; } } /// <summary> /// 构造函数初始化 /// </summary> /// <param name="stringNumber"></param> public StringNumCalc(String stringNumber) { this.stringNumber = stringNumber; } /// <summary> /// 实现自增运算 /// </summary> /// <param name="addend"></param> /// <returns></returns> public static StringNumCalc operator ++(StringNumCalc addend) { return addend + new StringNumCalc("1"); } /// <summary> /// 实现加法运算 /// </summary> /// <param name="augend"></param> /// <returns></returns> public static StringNumCalc operator +(StringNumCalc addend, StringNumCalc augend) { String resultNum = StringAddition(addend.StringNumber, augend.StringNumber); return new StringNumCalc(resultNum); } /// <summary> /// 实现字符串的加法运算 /// </summary> /// <param name="addend"></param> /// <param name="augend"></param> /// <returns></returns> public static String StringAddition(String addend, String augend) { bool inc = false; char[] addendArray = addend.ToCharArray(); Array.Reverse(addendArray); char[] augendArray = augend.ToCharArray(); Array.Reverse(augendArray); int addendLen = addendArray.Length; int augendLen = augendArray.Length; int maxLen = Math.Max(addendLen, augendLen) + 1; char[] result = new char[maxLen]; Stack<char> charStack = new Stack<char>(); for (int i = 0; i < maxLen; i++) { charStack.Clear(); bool addendCalc = (addendLen > i) ? true : false; bool augendCalc = (augendLen > i) ? true : false; if (inc) { charStack.Push('1'); } if (augendCalc) { charStack.Push(augendArray[i]); } if (addendCalc) { charStack.Push(addendArray[i]); } char resultChar = '0'; while (0 != charStack.Count) { char calcChar = charStack.Pop(); inc = false; resultChar = CharAdd(resultChar, calcChar, out inc); result[i] = resultChar; } } Array.Reverse(result); String stringResult = new String(result); return stringResult.TrimStart('\0'); } /// <summary> /// 实现一个字符的加法 /// </summary> /// <param name="addend"></param> /// <param name="augend"></param> /// <param name="increase"></param> /// <returns></returns> public static char CharAdd(char addend,char augend,out bool increase) { increase = false; char result; int addendNum = addend - '0'; int augendNum = augend - '0'; int resultNum = addendNum + augendNum; if (resultNum > 9) { increase = true; resultNum = resultNum - 10; } result = (char)(resultNum + '0'); return result; } }
使用方式如下:
String calcAddNum = "11111111111111111111"; StringNumCalc addNum = new StringNumCalc(calcAddNum); for (int i = 0; i < 100; i++) { Console.WriteLine(addNum.StringNumber); addNum++; }
相关文章推荐
- C# 实现数字字符串左补齐0的两种方法
- C#实现数字字符串左补齐0的两种方法
- C#实现数字字符串左补齐0的3种方法
- 判断一个字符串是否全是数字的多种方法及其性能比较(C#实现)
- 判断一个字符串是否全是数字的多种方法及其性能比较(C#实现)
- 在进行C#编程时候,有的时候我们需要判断一个字符串是否是数字字符串,我们可以通过以下两种方法来实现。 【方法一】:使用 try{} catch{} 语句。 我们可以在try语句块中试图
- 利用C#动态编译功能实现像Javascript中的Eval的功能来将一段字符串进行数学运算
- C#实现数字字符串左补齐0的两种方法
- C#、Java实现按字节截取字符串包含中文汉字和英文字符数字标点符号等
- (转)判断一个字符串是否全是数字的多种方法及其性能比较(C#实现
- C#实现数字字符串左补齐0的方法
- 如果系统要使用超大整数(超过long长度范围),请你设计一个数据结构来存储这种超大型数字以及设计一种算法来实现超大整数加法运算
- c#实现从字符串数组中把数字的元素找出来
- C#实现将千分位字符串转换成数字的方法
- C#实现大数字的运算
- 如果系统要使用超大整数(超过long长度范围),请你设计一个数据结构来存储这种超大型数字以及设计一种算法来实现超大整数加法运算)
- 面试算法题:不用+、-、×、÷数字运算符做加法 (位运算实现加法操作)
- C# 实现数字字符串左补齐0的两种方法
- 判断一个字符串是否全是数字的多种方法及其性能比较(C#实现)
- C#实现数字字符串左补齐0的两种方法