BigInteger用法-Java大数据存储、运算
用这样一组数字,0,1,1,2,3,5,8........,求第100个数是多少!
初看这道题很简单,我们只需要设定一个数组,然后往里面放入对应的值,除了前两个数字位,后面每个数字位都是前两个数字位的和。刚开始我用了int数组来存放这组数,发现根本放不下去,到了第47位数的时候就存在数值溢出了,然后我换为long型数组,同样放不下去,到了第93位数的时候也存在数值溢出了。这样,只能用BigInteger类了,这是java提供的可以存储任意精度的整数的类,用它我们不需要考虑数值溢出的错误。即使我们求第1000个数值也没有什么问题。不过,它的数值运算必须以方法调用方式取代运算符方式来实现,由于这么做复杂了许多,运算速度会比较慢,所以在确定数值不会溢出的情况下,是不推荐用这种型式来进行数值存储和运算的。以下是具体代码。
补充知识:
System.out.println("Integer的最大值:"+Integer.MAX_VALUE);
System.out.println("Long的最大值:"+Long.MAX_VALUE);
Integer的最大值:2147483647 //10位(十进制)
Long的最大值:9223372036854775807 //19位(十进制)
<pre code_snippet_id="642896" snippet_file_name="blog_20150517_2_2813945" name="code" class="java">BigInteger类型无限制大,故没最大值
package test;import java.math.BigInteger;public class BigIntegertest {public static void main(String[] args) {int num = 100;//整型数组int[] resultInt = new int[100];resultInt[0] = 0;resultInt[1] = 1;//长整型数组long[] resultLong = new long[100];resultLong[0] = 0L;resultLong[1] = 1L;//BigInteger数组BigInteger[] resultBigInteger = new BigInteger[100];resultBigInteger[0] = BigInteger.ZERO;resultBigInteger[1] = BigInteger.ONE;for (int i = 2; i < num; i++) {resultInt[i] = resultInt[i - 1] + resultInt[i - 2];resultLong[i] = resultLong[i - 1] + resultLong[i - 2];resultBigInteger[i] = resultBigInteger[i - 1].add(resultBigInteger[i - 2]);}System.out.println("--------------------用整型来存储数值的结果!---------------------");for (int i = 0; i < resultInt.length; i++) {System.out.println("resultInt[" + i + "] = "+ resultInt[i]);}System.out.println("--------------------用长整型来存储数值的结果!---------------------");for (int i = 0; i < resultLong.length; i++) {System.out.println("resultLong[" + i + "] = "+ resultLong[i]);}System.out.println("--------------------用BigInteger来存储数值的结果!---------------------");for (int i = 0; i < resultBigInteger.length; i++) {System.out.println("resultBigInteger[" + i + "] = "+ resultBigInteger[i]);}}
}
结果:
--------------------用整型来存储数值的结果!---------------------
resultInt[0] = 0
resultInt[1] = 1
resultInt[2] = 1
resultInt[3] = 2
resultInt[4] = 3
resultInt[5] = 5
resultInt[6] = 8
resultInt[7] = 13
resultInt[8] = 21
resultInt[9] = 34
resultInt[10] = 55
resultInt[11] = 89
resultInt[12] = 144
resultInt[13] = 233
resultInt[14] = 377
resultInt[15] = 610
resultInt[16] = 987
resultInt[17] = 1597
resultInt[18] = 2584
resultInt[19] = 4181
resultInt[20] = 6765
resultInt[21] = 10946
resultInt[22] = 17711
resultInt[23] = 28657
resultInt[24] = 46368
resultInt[25] = 75025
resultInt[26] = 121393
resultInt[27] = 196418
resultInt[28] = 317811
resultInt[29] = 514229
resultInt[30] = 832040
resultInt[31] = 1346269
resultInt[32] = 2178309
resultInt[33] = 3524578
resultInt[34] = 5702887
resultInt[35] = 9227465
resultInt[36] = 14930352
resultInt[37] = 24157817
resultInt[38] = 39088169
resultInt[39] = 63245986
resultInt[40] = 102334155
resultInt[41] = 165580141
resultInt[42] = 267914296
resultInt[43] = 433494437
resultInt[44] = 701408733
resultInt[45] = 1134903170
resultInt[46] = 1836311903
resultInt[47] = -1323752223
resultInt[48] = 512559680
resultInt[49] = -811192543
resultInt[50] = -298632863
resultInt[51] = -1109825406
resultInt[52] = -1408458269
resultInt[53] = 1776683621
resultInt[54] = 368225352
resultInt[55] = 2144908973
resultInt[56] = -1781832971
resultInt[57] = 363076002
resultInt[58] = -1418756969
resultInt[59] = -1055680967
resultInt[60] = 1820529360
resultInt[61] = 764848393
resultInt[62] = -1709589543
resultInt[63] = -944741150
resultInt[64] = 1640636603
resultInt[65] = 695895453
resultInt[66] = -1958435240
resultInt[67] = -1262539787
resultInt[68] = 1073992269
resultInt[69] = -188547518
resultInt[70] = 885444751
resultInt[71] = 696897233
resultInt[72] = 1582341984
resultInt[73] = -2015728079
resultInt[74] = -433386095
resultInt[75] = 1845853122
resultInt[76] = 1412467027
resultInt[77] = -1036647147
resultInt[78] = 375819880
resultInt[79] = -660827267
resultInt[80] = -285007387
resultInt[81] = -945834654
resultInt[82] = -1230842041
resultInt[83] = 2118290601
resultInt[84] = 887448560
resultInt[85] = -1289228135
resultInt[86] = -401779575
resultInt[87] = -1691007710
resultInt[88] = -2092787285
resultInt[89] = 511172301
resultInt[90] = -1581614984
resultInt[91] = -1070442683
resultInt[92] = 1642909629
resultInt[93] = 572466946
resultInt[94] = -2079590721
resultInt[95] = -1507123775
resultInt[96] = 708252800
resultInt[97] = -798870975
resultInt[98] = -90618175
resultInt[99] = -889489150
--------------------用长整型来存储数值的结果!---------------------
resultLong[0] = 0
resultLong[1] = 1
resultLong[2] = 1
resultLong[3] = 2
resultLong[4] = 3
resultLong[5] = 5
resultLong[6] = 8
resultLong[7] = 13
resultLong[8] = 21
resultLong[9] = 34
resultLong[10] = 55
resultLong[11] = 89
resultLong[12] = 144
resultLong[13] = 233
resultLong[14] = 377
resultLong[15] = 610
resultLong[16] = 987
resultLong[17] = 1597
resultLong[18] = 2584
resultLong[19] = 4181
resultLong[20] = 6765
resultLong[21] = 10946
resultLong[22] = 17711
resultLong[23] = 28657
resultLong[24] = 46368
resultLong[25] = 75025
resultLong[26] = 121393
resultLong[27] = 196418
resultLong[28] = 317811
resultLong[29] = 514229
resultLong[30] = 832040
resultLong[31] = 1346269
resultLong[32] = 2178309
resultLong[33] = 3524578
resultLong[34] = 5702887
resultLong[35] = 9227465
resultLong[36] = 14930352
resultLong[37] = 24157817
resultLong[38] = 39088169
resultLong[39] = 63245986
resultLong[40] = 102334155
resultLong[41] = 165580141
resultLong[42] = 267914296
resultLong[43] = 433494437
resultLong[44] = 701408733
resultLong[45] = 1134903170
resultLong[46] = 1836311903
resultLong[47] = 2971215073
resultLong[48] = 4807526976
resultLong[49] = 7778742049
resultLong[50] = 12586269025
resultLong[51] = 20365011074
resultLong[52] = 32951280099
resultLong[53] = 53316291173
resultLong[54] = 86267571272
resultLong[55] = 139583862445
resultLong[56] = 225851433717
resultLong[57] = 365435296162
resultLong[58] = 591286729879
resultLong[59] = 956722026041
resultLong[60] = 1548008755920
resultLong[61] = 2504730781961
resultLong[62] = 4052739537881
resultLong[63] = 6557470319842
resultLong[64] = 10610209857723
resultLong[65] = 17167680177565
resultLong[66] = 27777890035288
resultLong[67] = 44945570212853
resultLong[68] = 72723460248141
resultLong[69] = 117669030460994
resultLong[70] = 190392490709135
resultLong[71] = 308061521170129
resultLong[72] = 498454011879264
resultLong[73] = 806515533049393
resultLong[74] = 1304969544928657
resultLong[75] = 2111485077978050
resultLong[76] = 3416454622906707
resultLong[77] = 5527939700884757
resultLong[78] = 8944394323791464
resultLong[79] = 14472334024676221
resultLong[80] = 23416728348467685
resultLong[81] = 37889062373143906
resultLong[82] = 61305790721611591
resultLong[83] = 99194853094755497
resultLong[84] = 160500643816367088
resultLong[85] = 259695496911122585
resultLong[86] = 420196140727489673
resultLong[87] = 679891637638612258
resultLong[88] = 1100087778366101931
resultLong[89] = 1779979416004714189
resultLong[90] = 2880067194370816120
resultLong[91] = 4660046610375530309
resultLong[92] = 7540113804746346429
resultLong[93] = -6246583658587674878
resultLong[94] = 1293530146158671551
resultLong[95] = -4953053512429003327
resultLong[96] = -3659523366270331776
resultLong[97] = -8612576878699335103
resultLong[98] = 6174643828739884737
resultLong[99] = -2437933049959450366
--------------------用BigInteger来存储数值的结果!---------------------
resultBigInteger[0] = 0
resultBigInteger[1] = 1
resultBigInteger[2] = 1
resultBigInteger[3] = 2
resultBigInteger[4] = 3
resultBigInteger[5] = 5
resultBigInteger[6] = 8
resultBigInteger[7] = 13
resultBigInteger[8] = 21
resultBigInteger[9] = 34
resultBigInteger[10] = 55
resultBigInteger[11] = 89
resultBigInteger[12] = 144
resultBigInteger[13] = 233
resultBigInteger[14] = 377
resultBigInteger[15] = 610
resultBigInteger[16] = 987
resultBigInteger[17] = 1597
resultBigInteger[18] = 2584
resultBigInteger[19] = 4181
resultBigInteger[20] = 6765
resultBigInteger[21] = 10946
resultBigInteger[22] = 17711
resultBigInteger[23] = 28657
resultBigInteger[24] = 46368
resultBigInteger[25] = 75025
resultBigInteger[26] = 121393
resultBigInteger[27] = 196418
resultBigInteger[28] = 317811
resultBigInteger[29] = 514229
resultBigInteger[30] = 832040
resultBigInteger[31] = 1346269
resultBigInteger[32] = 2178309
resultBigInteger[33] = 3524578
resultBigInteger[34] = 5702887
resultBigInteger[35] = 9227465
resultBigInteger[36] = 14930352
resultBigInteger[37] = 24157817
resultBigInteger[38] = 39088169
resultBigInteger[39] = 63245986
resultBigInteger[40] = 102334155
resultBigInteger[41] = 165580141
resultBigInteger[42] = 267914296
resultBigInteger[43] = 433494437
resultBigInteger[44] = 701408733
resultBigInteger[45] = 1134903170
resultBigInteger[46] = 1836311903
resultBigInteger[47] = 2971215073
resultBigInteger[48] = 4807526976
resultBigInteger[49] = 7778742049
resultBigInteger[50] = 12586269025
resultBigInteger[51] = 20365011074
resultBigInteger[52] = 32951280099
resultBigInteger[53] = 53316291173
resultBigInteger[54] = 86267571272
resultBigInteger[55] = 139583862445
resultBigInteger[56] = 225851433717
resultBigInteger[57] = 365435296162
resultBigInteger[58] = 591286729879
resultBigInteger[59] = 956722026041
resultBigInteger[60] = 1548008755920
resultBigInteger[61] = 2504730781961
resultBigInteger[62] = 4052739537881
resultBigInteger[63] = 6557470319842
resultBigInteger[64] = 10610209857723
resultBigInteger[65] = 17167680177565
resultBigInteger[66] = 27777890035288
resultBigInteger[67] = 44945570212853
resultBigInteger[68] = 72723460248141
resultBigInteger[69] = 117669030460994
resultBigInteger[70] = 190392490709135
resultBigInteger[71] = 308061521170129
resultBigInteger[72] = 498454011879264
resultBigInteger[73] = 806515533049393
resultBigInteger[74] = 1304969544928657
resultBigInteger[75] = 2111485077978050
resultBigInteger[76] = 3416454622906707
resultBigInteger[77] = 5527939700884757
resultBigInteger[78] = 8944394323791464
resultBigInteger[79] = 14472334024676221
resultBigInteger[80] = 23416728348467685
resultBigInteger[81] = 37889062373143906
resultBigInteger[82] = 61305790721611591
resultBigInteger[83] = 99194853094755497
resultBigInteger[84] = 160500643816367088
resultBigInteger[85] = 259695496911122585
resultBigInteger[86] = 420196140727489673
resultBigInteger[87] = 679891637638612258
resultBigInteger[88] = 1100087778366101931
resultBigInteger[89] = 1779979416004714189
resultBigInteger[90] = 2880067194370816120
resultBigInteger[91] = 4660046610375530309
resultBigInteger[92] = 7540113804746346429
resultBigInteger[93] = 12200160415121876738
resultBigInteger[94] = 19740274219868223167
resultBigInteger[95] = 31940434634990099905
resultBigInteger[96] = 51680708854858323072
resultBigInteger[97] = 83621143489848422977
resultBigInteger[98] = 135301852344706746049
resultBigInteger[99] = 218922995834555169026
补充:int[]和long[] 发生溢出但并没有报错,而是给了一个错误的结果,改进方法如下。
long l =10000000000000L;if(l > Integer.MAX_VALUE){throw new Exception("超出int范围");}else{System.out.println((int)l);}
BigInteger用法-Java大数据存储、运算相关推荐
- java 存储数据到文件中_本机速度文件支持的“纯” Java大数据存储
java 存储数据到文件中 动机 所有这一切始于意识到我买不起足够大的计算机. 音频处理需要大量的内存. Audacity是一款出色的免费音频处理器,它使用文件支持的存储系统对其进行管理. 这是解决此 ...
- 本机速度文件支持的“纯” Java大数据存储
动机 所有这一切始于意识到我买不起足够大的计算机. 音频处理需要大量的内存. Audacity是一款出色的免费音频处理器,它使用文件支持的存储系统对其进行管理. 这是解决此类问题的常用方法,在这些问题 ...
- 【大数据存储技术】第8章 其他NoSQL数据库
文章目录 第8章 其他NoSQL数据库 8.1 图数据库简介 8.2 Neo4j 8.2.1 Neo4j 简介 8.2.2 Neo4j 的安装与实践 8.3 Redis和内存数据库 8.3.1 内存数 ...
- 大数据日知录_腾讯T4专家精心整理:java+大数据+机器学习+数据挖掘+算法大集结...
前言 本篇文章总共八大部分组成,包括数据挖掘:概念.模型.方法和算法:大数据日知录:架构与算法:大数据算法:数据结构与算法经典问题解析:算法基础:打开算法之门:机器学习算法大集结:Java数据结构和算 ...
- 主流大数据存储解决方案评析
EMC Isilon:横向扩展 性能突出 大数据存储不是一类单独的产品,它有很多实现方式.EMC Isilon存储事业部总经理杨兰江概括说,大数据存储应该具有以下一些特性:海量数据存储能力,可轻松管理 ...
- 为什么Java大数据是最火爆的编程语言?
未来10年将是大数据,人工智能爆发的时代,到时将会有大量的企业需要借助大数据,而Java最大的优势就是它在大数据领域的地位,目前很多的大数据架构都是通过Java来完成的. 在这个Android.iOS ...
- 选择java大数据开发方向学习,应该怎么规划学习路线
Java是目前使用广泛的编程语言之一,具有的众多特性,特别适合作为大数据应用的开发语言.Java语言功能强大和简单易用,不仅吸收了C++语言的各种优点还摒弃了C++里难以理解的多继承.指针等概念. J ...
- 大数据存储技术方案介绍
2019独角兽企业重金招聘Python工程师标准>>> 大数据存储方案 Cap思想 分布式领域CAP理论, Consistency(一致性), 数据一致更新,所有数据变动都是同步的 ...
- Java大数据学习路线图
Java大数据学习路线图 准备篇 适用/适合人群:适合基础小白 在这里还是要推荐下我自己建的大数据学习群:199427210,群里都是学大数据开发的,如果你正在学习大数据 ,小编欢迎你加入,大家都是软 ...
最新文章
- ASP.net随机数应用实例
- 面对疫情,飞书线上办公室,让我们换一种方式重聚!
- JAVA C++ 左花括号{该另起一行写还是写在行尾的思考
- 又做出行系统又组建车队,雷诺-日产、Transdev的三方联盟要发大招了
- 手把手部署Linux下磁盘配额(quota)应用与实战
- android课程设计实训目的,汽车专业实习目的与意义
- SEO策略几个常见现象
- mysql函数做条件_MySQL语句优化(三):避免条件字段做函数操作
- 自动化测试 - 封装WebDriver的getDriver
- python正则表达式笔记之字符集合的使用
- HTML:HTML界面实现HTML代码编译运行界面
- apache rewrite支持post数据
- STC单片机编程软件安装教程
- HDU6287 口算训练 【两种优化版分解质因数】【二分下标】
- 【鱼眼镜头2】[鱼眼畸变模型]:评估了五个模型:radial,division,FOV,多项式(如双三次]和rational模型。【需要修改】
- 【重识云原生】第六章容器基础6.4.10.4节——StatefulSet实操案例-使用 StatefulSet 部署Cassandra
- java插件相对布局,C#Winform中控件的布局思想
- conda 多环境切换
- 硬件堡垒机、软件堡垒机、云堡垒机品牌怎么选?
- 【python turtle小demo分享】一闪一闪亮晶晶,祝你每天都开心~