Java大数据BigInteger和BigDecimal
BigInteger和BigDecimal是以方法调用方式取代运算符方式来实现,等于是用速度换取了精度。
BigInteger(长整数)
常量名称 | 常量含义 |
---|---|
BigInteger.ONE | 常量1(BigInteger类型常数) |
BigInteger.TEN | 常量10(BigInteger类型常数) |
BigInteger.ZERO | 常量0(BigInteger类型常数) |
声明赋值
String bigNum1 = "-5";// 将字符串类型转为BigInteger类型BigInteger big1 = new BigInteger(bigNum1);int bigNum2 = 3;// 将int类型转为BigInteger类型BigInteger big2 = BigInteger.valueOf(bigNum2);
常用方法
// BigInteger的加法BigInteger bigAdd = big1.add(big2);// BigInteger的减法BigInteger bigSub = big1.subtract(big2);// BigInteger的乘法BigInteger bigMul = big1.multiply(big2);// BigInteger的除法,得出的结果为整数,建议除法使用BIgDecimalBigInteger bigDiv = big1.divide(big2);// 指数运算BigInteger bigPow = big1.pow(4);// 取余运算BigInteger bigRem = big1.remainder(big2);// 取绝对值BigInteger bigAbs = big1.abs();// 取相反数BigInteger bigNeg = big1.negate();// 比较大小,若bigCom为1,则big1大于big2,为0则相等,为-1,则小于big2int bigCom = big1.compareTo(big2);//将BigInteger转为doubledouble num1 = big1.doubleValue();//将BigInteger转为floatfloat num1Float = big1.floatValue();
BigDecimal(长小数)
常量名称 | 常量含义 |
---|---|
BigDecimal.ONE | 常量1(BigDecimal类型常数) |
BigDecimal.TEN | 常量10(BigDecimal类型常数) |
BigDecimal.ZERO | 常量0(BigDecimal类型常数) |
ROUND_CEILING | 向正无穷方向舍入 |
ROUND_DOWN | 向零方向舍入 |
ROUND_FLOOR |
向负无穷方向舍入 |
ROUND_HALF_DOWN | 向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,向下舍入, 例如1.55 保留一位小数结果为1.5 |
ROUND_HALF_EVEN |
向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,如果保留位数是奇数,使用ROUND_HALF_UP,如果是偶数,使用ROUND_HALF_DOWN |
ROUND_HALF_UP | 向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,向上舍入, 1.55保留一位小数结果为1.6 |
ROUND_UNNECESSARY | 计算结果是精确的,不需要舍入模式 |
ROUND_UP | 向远离0的方向舍入 |
声明赋值
和BigInteger类似,有两种方法
String bigNum1 = "5.6";BigDecimal big1 = new BigDecimal(bigNum1);double bigNum2 =2.3;BigDecimal big2 = BigDecimal.valueOf(bigNum2);2);
常用方法
除了除法规则以外其余和BIgInteger类似,如下所示:
// BigDecimal的加法BigDecimal bigAdd = big1.add(big2);// BigDecimal的减法BigDecimal bigSub = big1.subtract(big2);// BigDecimal的乘法BigDecimal bigMul = big1.multiply(big2);
BigDecimal除法规则
BigDecimal.divide(BigDecimal divisor, int scale, RoundingMode roundingMode) ;
scale为小数位数,roundingMode为小数模式(舍/入模式),共有八种模式。
// BigDecimal的除法使用规则BigDecimal bigD0 = new BigDecimal(-1);BigDecimal bigD1 = new BigDecimal(1);BigDecimal bigD10 = new BigDecimal(2);BigDecimal bigD2 = new BigDecimal(3);//向正无穷方向舍入BigDecimal bigDiv1 = bigD1.divide(bigD2,10,BigDecimal.ROUND_CEILING);System.out.println("1/3 向正无穷方向舍入:"+bigDiv1);//向零方向舍入BigDecimal bigDiv2 = bigD1.divide(bigD2,10,BigDecimal.ROUND_DOWN);System.out.println("1/3 向零方向舍入:"+bigDiv2);BigDecimal bigDiv3 = bigD0.divide(bigD2,10,BigDecimal.ROUND_DOWN);System.out.println("-1/3 向零方向舍入:"+bigDiv3);//向负无穷方向舍入ROUND_FLOORBigDecimal bigDiv4 = bigD0.divide(bigD2,10,BigDecimal.ROUND_FLOOR);System.out.println("-1/3 向负无穷方向舍入:"+bigDiv4);//向距离近的一边舍入,如果是这样,向下舍入, 例如1.55 保留一位小数结果为1.5,ROUND_HALF_DOWN//0.33333333333向0舍入,为0.3333333333BigDecimal bigDiv5 = bigD1.divide(bigD2,10,BigDecimal.ROUND_HALF_DOWN);System.out.println("1/3 向距离近的一边舍入:"+bigDiv5);//0.66666666666向1舍入,为0.6666666667BigDecimal bigDiv6 = bigD10.divide(bigD2,10,BigDecimal.ROUND_HALF_DOWN);System.out.println("2/3 向距离近的一边舍入:"+bigDiv6);//计算结果是精确的,不需要舍入模式,ROUND_UNNECESSARY,若为1/3,则会报错BigDecimal bigDiv7 = bigD2.divide(bigD1,10,BigDecimal.ROUND_UNNECESSARY);System.out.println("3/1 计算结果是精确的,不需要舍入模式:"+bigDiv7);//向远离0的方向舍入ROUND_UPBigDecimal bigDiv8 = bigD1.divide(bigD2,10,BigDecimal.ROUND_HALF_DOWN);System.out.println("1/3 向远离0的方向舍入:"+bigDiv8);BigDecimal bigDiv9 = bigD0.divide(bigD2,10,BigDecimal.ROUND_HALF_DOWN);System.out.println("-1/3 向远离0的方向舍入:"+bigDiv9);BigDecimal bigDiv10 = bigD10.divide(bigD2,10,BigDecimal.ROUND_HALF_DOWN);System.out.println("2/3 向远离0的方向舍入:"+bigDiv10);BigDecimal bigDiv11 = bigD10.divide(bigD2,10,BigDecimal.ROUND_HALF_DOWN);System.out.println("-2/3 向远离0的方向舍入:"+bigDiv11);//计算结果
1/3 向正无穷方向舍入:0.3333333334
1/3 向零方向舍入:0.3333333333
-1/3 向零方向舍入:-0.3333333333
-1/3 向负无穷方向舍入:-0.3333333334
1/3 向距离近的一边舍入:0.3333333333
2/3 向距离近的一边舍入:0.6666666667
3/1 计算结果是精确的,不需要舍入模式:3.0000000000
1/3 向远离0的方向舍入:0.3333333333
-1/3 向远离0的方向舍入:-0.3333333333
2/3 向远离0的方向舍入:0.6666666667
-2/3 向远离0的方向舍入:0.6666666667
Java大数据BigInteger和BigDecimal相关推荐
- 零基础学Java大数据难不难
java大数据如今在企业中用到的次数是非常多的,很多人都比较看好java技术,那么零基础学Java大数据难不难?想要学习java技术说难不难,说简单也不是很简单,来看看下面的详细介绍就知道了. 零基础 ...
- 2019年美团,滴滴,蘑菇街Java大数据面经分享!
作者:不清不慎!目前从事Java大数据开发相关的工作,对大数据spark等分布式计算领域有着浓厚的兴趣,欢迎一起交流,一起进步.本文为作者投稿,有兴趣投稿的同学,请在后台回复投稿! 大概在三月份开始面 ...
- python大数据和java大数据的区别-未来Java、大数据、Python哪个前景更好,薪资更高?...
都知道现在最火爆的是人工智能.大数据.而人工智能和大数据主要用的语言就是Java和Python.今天我们就来分析一下,当前java,python和大数据,哪个就业前景更好?自己该学哪一个? Java和 ...
- 原来Java大数据才是真正的高富帅!
大数据时代,中国IT环境也将面临重新洗牌,不仅仅是企业,更是程序员们转型可遇而不可求的机遇. 国内大多数大型互联网公司的程序员被称作研发工程师,但实际上国内几乎没有研发项目,只能叫做开发.开发程序员的 ...
- Java大数据你该学哪个
1.关于Java Java就是一门编程语言.实现同一个需求有上百种编程语言可以完成,Java之于大数据就是一种工具罢了. 2.关于大数据 大数据就是一个行业,实现同一个需求同样有多种工具可以选择,狭义 ...
- java大数据开发做什么你知道吗?大数据的职业发展规划
你想过自己的未来规划吗? java大数据程序员只需要学到技术就行吗? 1.如何成为大数据工程师 Java开发是IT行业的经典岗位,行业当中存在普遍的需求,Web开发.Android开发. ...
- JAVA大数据需要学什么
大数据时代,Java开发的需求量越来越大 大数据已经成为了企业竞争的核心力量.而Java是企业大数据技术的主要支撑语言,Hadoop本身就是用Java编写的.当你需要在运行MapReduce的服务器集 ...
- Java和Java大数据有什么区别?
单单提起java或者大数据,很多人对此都一目了然,但对于Java大数据这样一个新鲜名词,多少有些疑惑.那java和java大数据学习的内容是一样的吗?两者有什么区别呢?今天就从java和java大数据 ...
- 为什么Java大数据是最火爆的编程语言?
未来10年将是大数据,人工智能爆发的时代,到时将会有大量的企业需要借助大数据,而Java最大的优势就是它在大数据领域的地位,目前很多的大数据架构都是通过Java来完成的. 在这个Android.iOS ...
最新文章
- 参数服务器训练基本理论
- python array赋值_从踩坑学Python内部原理(5):执行时机的差异
- IDEA 2019 生成Spring Boot项目,编写第一个Hello World程序,并打包成jar
- php session举例,PHP 中session的经典用法
- modelandview跳转页面404_Thinkphp制作404跳转页
- 思路:当一个表嵌套另一个表时候 只需在dao中引入该mapper即可 进行正常的数据插入 查询 修改等...
- c语言知识重温及深入
- EOF的意义及用法(while(scanf(“%d“,n) != EOF))
- 3.2 使用pytorch搭建AlexNet并训练花分类数据集
- Vue + Element UI——对话框式登录框DEMO
- shell之九九乘法表
- winfrom axacropdf预览pdf怎么一直显示_PDF合并怎么做?分享多个PDF文件合并的方法...
- 大学计算机在线阅读,大学计算机
- C#中利用NPOI包操作Excel文件
- 数据库——实体联系模型
- linux网卡驱动如何安装,linux下网卡驱动安装全过程
- sentencePiece入门小结
- 移动互联网终端 淘宝客如何实现盈利
- 苹果开发者注册了邓白氏编码不能用,查询时提示该组织不存在怎么办?
- php取FBOX数据,如何实现如下功能
热门文章
- Excel中可视化数据图表制作要点有哪些?
- iPhone逆向--工具篇
- Python + Baidu API 实现图片中文字的提取
- 课程设计-地铁自助售票机模拟系统
- 引入CSS样式表的三种方法
- 学理发的入门基础知识 哪些内容要了解
- react-quill 图片上传及图片粘贴功能踩坑记录
- python修改个人信息代码,牛逼了,利用Python实现“天眼系统”,只要照片就能了解个人信息...
- 用Bootstrap实现搜索select下拉框:bootstrap-select
- Adobe CS6 系列索引