BigInteger和BigDecimal是以方法调用方式取代运算符方式来实现,等于是用速度换取了精度。

BigInteger(长整数)

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的常量
常量名称 常量含义
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相关推荐

  1. 零基础学Java大数据难不难

    java大数据如今在企业中用到的次数是非常多的,很多人都比较看好java技术,那么零基础学Java大数据难不难?想要学习java技术说难不难,说简单也不是很简单,来看看下面的详细介绍就知道了. 零基础 ...

  2. 2019年美团,滴滴,蘑菇街Java大数据面经分享!

    作者:不清不慎!目前从事Java大数据开发相关的工作,对大数据spark等分布式计算领域有着浓厚的兴趣,欢迎一起交流,一起进步.本文为作者投稿,有兴趣投稿的同学,请在后台回复投稿! 大概在三月份开始面 ...

  3. python大数据和java大数据的区别-未来Java、大数据、Python哪个前景更好,薪资更高?...

    都知道现在最火爆的是人工智能.大数据.而人工智能和大数据主要用的语言就是Java和Python.今天我们就来分析一下,当前java,python和大数据,哪个就业前景更好?自己该学哪一个? Java和 ...

  4. 原来Java大数据才是真正的高富帅!

    大数据时代,中国IT环境也将面临重新洗牌,不仅仅是企业,更是程序员们转型可遇而不可求的机遇. 国内大多数大型互联网公司的程序员被称作研发工程师,但实际上国内几乎没有研发项目,只能叫做开发.开发程序员的 ...

  5. Java大数据你该学哪个

    1.关于Java Java就是一门编程语言.实现同一个需求有上百种编程语言可以完成,Java之于大数据就是一种工具罢了. 2.关于大数据 大数据就是一个行业,实现同一个需求同样有多种工具可以选择,狭义 ...

  6. java大数据开发做什么你知道吗?大数据的职业发展规划

    ​​​​​​ 你想过自己的未来规划吗? java大数据程序员只需要学到技术就行吗? 1.如何成为大数据工程师 Java开发是IT行业的经典岗位,行业当中存在普遍的需求,Web开发.Android开发. ...

  7. JAVA大数据需要学什么

    大数据时代,Java开发的需求量越来越大 大数据已经成为了企业竞争的核心力量.而Java是企业大数据技术的主要支撑语言,Hadoop本身就是用Java编写的.当你需要在运行MapReduce的服务器集 ...

  8. Java和Java大数据有什么区别?

    单单提起java或者大数据,很多人对此都一目了然,但对于Java大数据这样一个新鲜名词,多少有些疑惑.那java和java大数据学习的内容是一样的吗?两者有什么区别呢?今天就从java和java大数据 ...

  9. 为什么Java大数据是最火爆的编程语言?

    未来10年将是大数据,人工智能爆发的时代,到时将会有大量的企业需要借助大数据,而Java最大的优势就是它在大数据领域的地位,目前很多的大数据架构都是通过Java来完成的. 在这个Android.iOS ...

最新文章

  1. 参数服务器训练基本理论
  2. python array赋值_从踩坑学Python内部原理(5):执行时机的差异
  3. IDEA 2019 生成Spring Boot项目,编写第一个Hello World程序,并打包成jar
  4. php session举例,PHP 中session的经典用法
  5. modelandview跳转页面404_Thinkphp制作404跳转页
  6. 思路:当一个表嵌套另一个表时候 只需在dao中引入该mapper即可 进行正常的数据插入 查询 修改等...
  7. c语言知识重温及深入
  8. EOF的意义及用法(while(scanf(“%d“,n) != EOF))
  9. 3.2 使用pytorch搭建AlexNet并训练花分类数据集
  10. Vue + Element UI——对话框式登录框DEMO
  11. shell之九九乘法表
  12. winfrom axacropdf预览pdf怎么一直显示_PDF合并怎么做?分享多个PDF文件合并的方法...
  13. 大学计算机在线阅读,大学计算机
  14. C#中利用NPOI包操作Excel文件
  15. 数据库——实体联系模型
  16. linux网卡驱动如何安装,linux下网卡驱动安装全过程
  17. sentencePiece入门小结
  18. 移动互联网终端 淘宝客如何实现盈利
  19. 苹果开发者注册了邓白氏编码不能用,查询时提示该组织不存在怎么办?
  20. php取FBOX数据,如何实现如下功能

热门文章

  1. Excel中可视化数据图表制作要点有哪些?
  2. iPhone逆向--工具篇
  3. Python + Baidu API 实现图片中文字的提取
  4. 课程设计-地铁自助售票机模拟系统
  5. 引入CSS样式表的三种方法
  6. 学理发的入门基础知识 哪些内容要了解
  7. react-quill 图片上传及图片粘贴功能踩坑记录
  8. python修改个人信息代码,牛逼了,利用Python实现“天眼系统”,只要照片就能了解个人信息...
  9. 用Bootstrap实现搜索select下拉框:bootstrap-select
  10. Adobe CS6 系列索引