服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|JavaScript|易语言|

服务器之家 - 编程语言 - JAVA教程 - Java中两个大数之间的相关运算及BigInteger代码示例

Java中两个大数之间的相关运算及BigInteger代码示例

2021-02-07 11:57笑哼 JAVA教程

这篇文章主要介绍了Java中两个大数之间的相关运算及BigInteger代码示例,通过biginteger类实现大数的运算代码,具有一定参考价值,需要的朋友可以了解下。

java中两个大数之间的相关运算及biginteger两段实例代码,具体如下。

大数相减

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
import java.util.scanner;
/*
 进行大数相减,只能对两个正数进行相减
*/
public class bignumber
{
    public static void main(string[] args)
      {
        scanner scan=new scanner(system.in);
        string a,b;
        while (scan.hasnext())
            {
            bignumber big=new bignumber();
            a=scan.nextline();
            b=scan.nextline();
            system.out.println(big.bignumbersub(a,b));
        }
    }
    public string bignumbersub(string x,string y)
      {
        //string result=null;
        char[] a=x.tochararray();
        char[] b=y.tochararray();
        int lena=a.length;
        int lenb=b.length;
        int len=lena>lenb?lena:lenb;
        int[] result=new int[len];
        //字符串反转
        char[] a=new char[lena];
        char[] b=new char[lenb];
        for (int i=0;i<lena;i++)
            {
            a[i]=a[lena-i-1];
        }
        for (int j=0;j<lenb;j++)
            {
            b[j]=b[lenb-j-1];
        }
        //判断最终结果的正负
        char sign='+';
        if (lena<lenb)
            {
            sign='-';
        } else if(lena>lenb)
            {
            sign='+';
        } else
            {
            for (int i=lena-1;i>=0;i--)
                  {
                if (a[i]<b[i])
                        {
                    sign='-';
                    break;
                } else if(a[i]>b[i])
                        {
                    sign='+';
                    break;
                }
            }
        }
        //     
        int aint,bint;
        for (int i=0;i<len;i++)
            {
            aint=i<lena?a[i]-'0':0;
            bint=i<lenb?b[i]-'0':0;
            if (sign=='+')
                  {
                result[i]=aint-bint;
            } else
                  {
                result[i]=bint-aint;
            }
        }
        //借位处理
        for (int j=0;j<len;j++)
            {
            if (result[j]<0)
                  {
                result[j+1]=result[j+1]-1;
                result[j]=result[j]+10;
            }
        }
        //将结果对应为0的位置取消掉
        stringbuilder sb=new stringbuilder();
        boolean flag=true;
        //防止结果集中的地位出现0
        if (sign=='-')
            {
            sb.append(sign);
        }
        for (int i=len-1;i>=0;i--)
            {
            if (result[i]==0&&flag)
                  {
            } else
                  {
                sb.append(result[i]);
                flag=false;
            }
        }
        return sb.tostring();
        //return result;
    }
}

结果:

Java中两个大数之间的相关运算及BigInteger代码示例

在java中,还可以通过biginteger类来解决精度问题。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import java.util.scanner;
import java.math.biginteger;
/*
 进行大数相加,
*/
public class bignumber
{
    public static void main(string[] args)
      {
        scanner scan=new scanner(system.in);
        while (scan.hasnext())
            {
            biginteger b1=new biginteger(scan.nextline());
            biginteger b2=new biginteger(scan.nextline());
            system.out.println(b1.add(b2));
            //system.out.println(000);
        }
    }
}

结果

Java中两个大数之间的相关运算及BigInteger代码示例

接着再看一则代码示例:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/**
 * 大数运算
 * biginteger
 * 求91的5次方
 * 求它除以100的余数
 * 大数运算biginteger类的方法调用
 */
package com.test1;
import java.math.*;
import java.math.biginteger;
public class test100 {
 
  /**
   * @param args
   */
  static biginteger k=biginteger.valueof(1);
  static biginteger j=biginteger.valueof(91);
  static biginteger n;
  bigdecimal l=new bigdecimal("100");
  static biginteger m=new biginteger("100");
  public static void main(string[] args) {
    // todo auto-generatedmethod stub
   
//   k=biginteger.valueof(1);
//   k=new biginteger("1");
    for(int i=1;i<=5;i++){
      k=k.multiply(j);
      system.out.println(k.tostring());
//     n=k.remainder(m);
      n=k.remainder(m);
      system.out.println(n.tostring());
      
    }
 
  }
 
}

结果:

Java中两个大数之间的相关运算及BigInteger代码示例

总结

以上就是本文关于java中两个大数之间的相关运算及biginteger代码示例的全部内容,希望对大家有所帮助。如有不足之处,欢迎留言指出。

原文链接:http://www.cnblogs.com/xh0102/p/5767530.html

延伸 · 阅读

精彩推荐
  • JAVA教程Maven分模块开发执行指令失败的问题

    Maven分模块开发执行指令失败的问题

    Maven分模块开发,行指令失败,modules.module[3]‘ specifies duplicate child module maven_dao @ line 29, column 1的问题,本文给大家分享解决方法,感兴趣的朋友跟随小编一起...

    It_newProgrammer5012020-09-28
  • JAVA教程Java实现记事本功能

    Java实现记事本功能

    这篇文章主要为大家详细介绍了Java实现记事本功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    明礼馨德2802020-11-10
  • JAVA教程java实现飞机游戏代码

    java实现飞机游戏代码

    这篇文章主要为大家详细介绍了java实现飞机游戏代码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 ...

    sweetheart7-73772020-09-19
  • JAVA教程Java实现阿里云短信接口的示例

    Java实现阿里云短信接口的示例

    这篇文章主要介绍了Java实现阿里云短信接口的示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下...

    Amour恋空5232020-09-28
  • JAVA教程相册管理系统(Java表单+xml数据库存储)

    相册管理系统(Java表单+xml数据库存储)

    这篇文章主要为大家详细介绍了相册管理系统的实现步骤,Java表单的文件上传和下载,xml数据库存储信息,感兴趣的小伙伴们可以参考一下 ...

    wangjian_an2452020-06-01
  • JAVA教程SpringBoot 定时任务遇到的坑

    SpringBoot 定时任务遇到的坑

    这篇文章主要介绍了SpringBoot 定时任务遇到的坑,今天踩的这个坑和 cron 表达式有关,文中给大家介绍了cron 表达式的解释,需要的朋友一起看看吧...

    tuicool4042021-02-03
  • JAVA教程基于JAVA文件中获取路径及WEB应用程序获取路径的方法

    基于JAVA文件中获取路径及WEB应用程序获取路径的方法

    下面小编就为大家带来一篇基于JAVA文件中获取路径及WEB应用程序获取路径的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小...

    陶邦仁11172021-01-31
  • JAVA教程Java中父类Object的常用方法总结

    Java中父类Object的常用方法总结

    这篇文章给大家介绍了Java中父类Object的三个常用方法,对大家学习或使用Java具有一定的参考借鉴价值,有需要的朋友们下面来一起看看吧。 ...

    daisy3802020-06-15