package 有用的方法.精度问题;
import java.util.Scanner;
import java.util.Stack;
public class AAddBInt {
/**
* 两个数相加,非常大的数,用string表示
* @param args
*/
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);
String s1 =sc.next();
String s2 =sc.next();
//定义一个
Stack<Character> stack1 = new Stack<>();
Stack<Character> stack2 = new Stack<>();
//先进栈
char[] c1 = s1.toCharArray();
char[] c2 = s2.toCharArray();
if (c1.length>c2.length){
for (int i = 0; i <c1.length ; i++) {
stack1.push(c1[i]);
}
for (int i = 0; i <c2.length ; i++) {
stack2.push(c2[i]);
}
}else{
for (int i = 0; i <c1.length ; i++) {
stack2.push(c1[i]);
}
for (int i = 0; i <c2.length ; i++) {
stack1.push(c2[i]);
}
}
Stack<Integer> stack =new Stack<>();
int ans=0;
while (!stack1.empty()){
Character p1 = stack1.pop();
Character p2='0';
if (!stack2.empty()){
p2 =stack2.pop();
}
int sum1;
if (ans==1){
sum1=p1-'0'+1;
}else {
sum1=p1-'0';
}
int sum2=p2-'0';
if (sum1+sum2>=10){
stack.push((sum1+sum2)%10);
ans=1;
}else {
stack.push(sum1+sum2);
ans=0;
}
}
if (ans==1){
stack.push(1);
}
while (!stack.empty()){
Integer pop = stack.pop();
System.out.print(pop);
}
}
}
两数相加高精度问题
猜你喜欢
转载自blog.csdn.net/qq_42794826/article/details/109954718
今日推荐
周排行