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类来解决精度问题。
?
|
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);
}
}
}
|
结果
接着再看一则代码示例:
?
|
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代码示例的全部内容,希望对大家有所帮助。如有不足之处,欢迎留言指出。
原文链接:http://www.cnblogs.com/xh0102/p/5767530.html
相关文章
猜你喜欢
- 64M VPS建站:是否适合初学者操作和管理? 2025-06-10
- ASP.NET自助建站系统中的用户注册和登录功能定制方法 2025-06-10
- ASP.NET自助建站系统的域名绑定与解析教程 2025-06-10
- 个人服务器网站搭建:如何选择合适的服务器提供商? 2025-06-10
- ASP.NET自助建站系统中如何实现多语言支持? 2025-06-10
TA的动态
- 2025-07-10 怎样使用阿里云的安全工具进行服务器漏洞扫描和修复?
- 2025-07-10 怎样使用命令行工具优化Linux云服务器的Ping性能?
- 2025-07-10 怎样使用Xshell连接华为云服务器,实现高效远程管理?
- 2025-07-10 怎样利用云服务器D盘搭建稳定、高效的网站托管环境?
- 2025-07-10 怎样使用阿里云的安全组功能来增强服务器防火墙的安全性?
快网idc优惠网
QQ交流群
您的支持,是我们最大的动力!
热门文章
-
2025-05-27 84
-
2025-05-25 60
-
2025-05-25 114
-
2025-05-26 45
-
2025-05-27 85
热门评论




