BigInteger a=new BigInteger("65650505005050205020502");
BigInteger b=new BigInteger("65650505005050205020503"); 加法: a.add(b);
减法: a.subtract(b);
乘法: a.multiply(b);
除法: a.divide(b);
以前看到了大数的运算,很多人说可以用String,我今天尝试了,可要怎么写啊,谁能告诉我一下啊
String a ="65650505005050205020502";
String b="65650505005050205020503";
String c="a"+"b";
System.out.println(c);
BigInteger b=new BigInteger("65650505005050205020503"); 加法: a.add(b);
减法: a.subtract(b);
乘法: a.multiply(b);
除法: a.divide(b);
以前看到了大数的运算,很多人说可以用String,我今天尝试了,可要怎么写啊,谁能告诉我一下啊
String a ="65650505005050205020502";
String b="65650505005050205020503";
String c="a"+"b";
System.out.println(c);
package com.travelsky;import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;public class hello {
public String add(String a, String b){
String value = "";
int flag = 0; //进位标志
int flag_len = 0;//标示哪个字符串长度,1表示a长度大于b,0表示b长度大于a
int len = 0;//两个字符串中短的那个的长度
if(a.length() >= b.length()){
len = b.length();
flag_len = 1;
}else{
len = a.length();
flag_len = 0;
}
int v = a.length()+b.length()-2*len;
if(flag_len == 1){
for(int i=len-1; i>=0; --i){
int ch = a.charAt(i+v)+b.charAt(i);
if(ch > 105){
value = (char)(ch-58+flag) + value;
flag = 1;
}else{
value = (char)(ch-48+flag) + value;
flag = 0;
}
}
if(flag == 1){
return add(a.substring(0,v),"1") + value;
}else{
return a.substring(0,v)+value;
}
}else{
for(int i=len-1; i>=0; --i){
int ch = a.charAt(i)+b.charAt(i+v);
if(ch > 105){
value = (char)(ch-58+flag) + value;
flag = 1;
}else{
value = (char)(ch-48+flag) + value;
flag = 0;
}
}
if(flag == 1){
return add(b.substring(0,v),"1") + value;
}else{
return b.substring(0,v) + value;
}
}
}
public static void main(String[]args) {
String s1 = "65650505005050205020502";
String s2 = "65650505005050205020503";
hello h = new hello();
System.out.println(h.add(s1, s2));
}
}
/*超过Long类型的大数的加法运算,使用String类型来记录结果,
* 返回两个数字相加的和,参数作为String类型进行传递
**/
public static String jiaFaYunSuan(String str1, String str2) {
String dashujieguo = "";
int a = Math.max(str1.length(), str2.length());
if (a == str1.length()) {
for (int i = a - str2.length(); i >= 0; i--) {
str2 = "0" + str2;
}
str1 = "0" + str1;
}
else if (a == str2.length()) {
for (int i = a - str1.length(); i >= 0; i--) {
str1 = "0" + str1;
}
str2 = "0" + str2;
} int[] shuzu = new int[str1.length()];
int[] shuzu2 = new int[str2.length()];
int[] shuzu3 = new int[str2.length()]; for (int i = 0; i < shuzu.length; i++) {
shuzu[i] = Integer.parseInt(str1.charAt(i) + "");
shuzu2[i] = Integer.parseInt(str2.charAt(i) + "");
}
for (int i = shuzu.length - 1; i >= 0; i--) {
if (i == shuzu.length - 1) {
int k = shuzu[i] + shuzu2[i];
shuzu3[i] = (k >= 10) ? k - 10 : k;
}
else {
if (shuzu[i + 1] + shuzu2[i + 1] >= 10) {
int k = shuzu[i] + shuzu2[i] + 1;
shuzu3[i] = (k >= 10) ? k - 10 : k;
}
else {
int k = shuzu[i] + shuzu2[i];
shuzu3[i] = (k >= 10) ? k - 10 : k;
}
}
}
for (int i = 0; i < shuzu3.length; i++) {
if (i == 0) {
if (shuzu3[i] == 0)
continue;
}
else {
dashujieguo += shuzu3[i];
} }
return dashujieguo;
}
}