*思路:根据竖式相乘法,从最后一位相乘,例如:15 15
1 5
x 1 5
5x5=25 位数1+1=2 2 5
1X5=5 位数:2+1=3 5
5x1=5 位数:1+2=3 5
1x1=1 位数:2+2=4 1
结果: 2 2 5
public string Multiply(string num1,string num2)
{
StringBuilder strB=new StringBuilder(new string('0',num1.Length+num2.Length))
for(int i=num1.Length-1;i>=0;i--)
{
for(int j=num2.Length-1;j>=0;j--)
{
//计算结果
int nextNum=strB[i+j+1]-'0'+(num1[i]-'0')*(num2[j]-'0');
//当前位数的数字 对应个位
strB[i+j+1]=(char)(nextNum%10+'0');
//进位的数字 对应十位
strB[i+j]+=(char)(nextNum/10);
}
}
string res=strB.toString().TrimStart('0');
return res.Length==0?"0":res;
}

本文介绍了一种使用C#实现两个大数相乘的方法,通过模拟手算乘法的过程来处理超过常规整型变量范围的数值运算。该算法详细展示了如何逐位相乘并考虑进位的情况。
2591

被折叠的 条评论
为什么被折叠?



