/**
* 无限数加法 超出计算机表示范围 溢出 int型
* @param src
* @param target
* @return
*/
public String addition(String src,String target)
{
String result="";
char[] tempSrcs=src.toCharArray();
char[] tempTargets=target.toCharArray();
int lenSrc=tempSrcs.length;
int lenTarget=tempTargets.length;
//反转 我喜欢从0开始
char[] srcs=new char[lenSrc];
char[] targets=new char[lenTarget];
for (int i = 0; i < tempSrcs.length; i++) {
srcs[i]=tempSrcs[lenSrc-i-1];
}
for (int i = 0; i < tempTargets.length; i++) {
targets[i]=tempTargets[lenTarget-i-1];
}
//计算
int maxNum=Math.max(lenSrc , lenTarget);
int temp=0;//进位
int tempSrc=0;//临时src变量
int tempTarget=0;//临时target变量
for (int i = 0; i < maxNum; i++) {
tempSrc=i<lenSrc?((int) srcs[i] -(int) '0'):0;//取
tempTarget=i<lenTarget?((int) targets[i] -(int) '0'):0;//取
result=(tempSrc+tempTarget+temp)%10+result;//计算
temp=(tempSrc+tempTarget+temp)/10;//计算进位
}
//是否需要最高位进位
if(temp==1)
{
result="1"+result;
}
return result;
}
public void addition()
{
System.out.println(addition("1111111111111111111111111111111111111111111111111", "999999999999999999999999999999999999999999999999999999999999999999"));
}
无限数加法 超出计算机表示范围 溢出 int型
最新推荐文章于 2022-04-23 11:17:13 发布