大数加减法-java实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

⼤数加减法-java实现
计算机处理的各种数据类型都有个范围,超出范围的就处理不了。

如果做超⼤数运算加减乘除,普通⽅法肯定是不⾏的,那么我们遇到⼤数的运算怎么处理呢?今天介绍⼀种⼤数加减乘除运算的⽅法思路:
1. 将两个特⼤的整数利⽤字符数组作为存储介质。

2. 逐位计算遍历结果逢⼗进⼀。

3. 对存储结果的数组进⾏翻转处理。

下⾯上代码:
1public class LargeIntSub {
2public static void main(String[] args) {
3
4 String a="6789";
5 String b="123";
6int []pa=stringToInts(a);
7int []pb=stringToInts(b);
8 String result_sub=sub(pa,pb);
9 System.out.println("sub result is:"+result_sub);
10 }
11
12public static int[] stringToInts(String s){
13int[] n = new int[s.length()];
14for(int i = 0;i<s.length();i++){
15 n[i] = Integer.parseInt(s.substring(i,i+1));
16 }
17return n;
18 }
19
20public static String sub(int []a,int []b){
21 StringBuffer sb=new StringBuffer();
22boolean flag=false;
23if(a.length<b.length){
24int c[]=a;
25 a=b;b=c;
26 flag=true;
27 }
28int a_len= a.length-1;
29int b_len=b.length-1;
30int degrade=0;
31while(a_len>=0||b_len>=0){
32int temp=0;
33if(a_len>=0&&b_len>=0){
34if((a[a_len]-degrade)<b[b_len]){
35 temp=a[a_len]+10-b[b_len]-degrade;
36 degrade=1;
37 }else{
38 temp=a[a_len]-b[b_len]-degrade;
39 }
40 }else if(a_len>=0){
41 temp=a[a_len]-degrade;
42 degrade=0;
43 }
44 sb.append(temp+"");
45
46 a_len--;b_len--;
47 }
48if(flag){
49return getNum(sb.append("-").reverse());
50 }
51return getNum(sb.reverse());
52 }
53public static String getNum(StringBuffer sb){
54while(sb.length() > 1 && sb.charAt(0) == '0') {
55 sb.deleteCharAt(0);
56 }
57return sb.toString();
58 }
59
60 }。

相关文档
最新文档