BigDecimal加减乘除,以及四舍五入

  • 代码实例:
  • 四舍五入模式

代码实例:

BigDecimal numO= new BigDecimal("10");
BigDecimal numS= new BigDecimal("5");
BigDecimal numT= null;  //加  add()
numT=  numO.add(numS);
System.out.println("和 是:" + numT);  //减  subtract()
numT= numO.subtract(numS);
System.out.println("差  是:" + numT);  //乘  multiply()
numT= numO.multiply(numS);
System.out.println("积  是:" + numT);  //除  divide() 保留2位小数 四舍五入
numT= numO.divide(numS,2,BigDecimal.ROUND_HALF_UP);
System.out.println("商  是:" + numT); //前提为a、b均不能为null
if(a.compareTo(b) == -1){System.out.println("a小于b");
}if(a.compareTo(b) == 0){System.out.println("a等于b");
}if(a.compareTo(b) == 1){System.out.println("a大于b");
}if(a.compareTo(b) > -1){System.out.println("a大于等于b");
}if(a.compareTo(b) < 1){System.out.println("a小于等于b");
}

注意:
1、除法divide()使用

使用除法函数在divide的时候要设置各种参数,要精确的小数位数和舍入模式,不然会出现报错,错误信息如下图错误用法:numT= numO.divide(numS);  正确用法:numT= numO.divide(numS,2,BigDecimal.ROUND_HALF_UP);参数说明:divide(BigDecimal divisor 除数, int scale 精确小数位,  int roundingMode 舍入模式)


2、BigDecimal构造方法使用

使用BigDecimal类构造方法传入double类型时,计算的结果也是不精确的!因为不是所有的浮点数都能够被精确的表示成一个double 类型值,有些浮点数值不能够被精确的表示成 double 类型值,因此它会被表示成与它最接近的 double 类型的值。必须改用传入String的构造方法。

四舍五入模式

1、ROUND_UP

舍入远离零的舍入模式。

在丢弃非零部分之前始终增加数字(始终对非零舍弃部分前面的数字加1)。

注意,此舍入模式始终不会减少计算值的大小。

2、ROUND_DOWN

接近零的舍入模式。

在丢弃某部分之前始终不增加数字(从不对舍弃部分前面的数字加1,即截短)。

注意,此舍入模式始终不会增加计算值的大小。

3、ROUND_CEILING

接近正无穷大的舍入模式。

如果 BigDecimal 为正,则舍入行为与 ROUND_UP 相同;

如果为负,则舍入行为与 ROUND_DOWN 相同。

注意,此舍入模式始终不会减少计算值。

4、ROUND_FLOOR

接近负无穷大的舍入模式。

如果 BigDecimal 为正,则舍入行为与 ROUND_DOWN 相同;

如果为负,则舍入行为与 ROUND_UP 相同。

注意,此舍入模式始终不会增加计算值。

5、ROUND_HALF_UP

向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则为向上舍入的舍入模式。

如果舍弃部分 >= 0.5,则舍入行为与 ROUND_UP 相同;否则舍入行为与 ROUND_DOWN 相同。

注意,这是我们大多数人在小学时就学过的舍入模式(四舍五入)。

6、ROUND_HALF_DOWN

向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则为上舍入的舍入模式。

如果舍弃部分 > 0.5,则舍入行为与 ROUND_UP 相同;否则舍入行为与 ROUND_DOWN 相同(五舍六入)。

7、ROUND_HALF_EVEN 银行家舍入法

向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则向相邻的偶数舍入。

如果舍弃部分左边的数字为奇数,则舍入行为与 ROUND_HALF_UP 相同;

如果为偶数,则舍入行为与 ROUND_HALF_DOWN 相同。

注意,在重复进行一系列计算时,此舍入模式可以将累加错误减到最小。

此舍入模式也称为“银行家舍入法”,主要在美国使用。四舍六入,五分两种情况。

如果前一位为奇数,则入位,否则舍去。

以下例子为保留小数点1位,那么这种舍入方式下的结果。

1.15>1.2 1.25>1.2

8、ROUND_UNNECESSARY

断言请求的操作具有精确的结果,因此不需要舍入。

如果对获得精确结果的操作指定此舍入模式,则抛出ArithmeticException。

BigDecimal加减乘除,以及四舍五入方法相关推荐

  1. BigDecimal加减乘除运算

    java.math.BigDecimal.BigDecimal一共有4个够造方法,让我先来看看其中的两种用法: 第一种:BigDecimal(double val) Translates a doub ...

  2. BigDecimal 加减乘除运算

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. java.math.BigDecimal.BigDecimal一共有4个够造方法,让我先来看看其中的 ...

  3. bigdecimal除法不四舍五入_BigDecimal四舍五入与保留位

    1.引言 借用<Effactive Java>这本书中的话,float和double类型的主要设计目标是为了科学计算和工程计算.他们执行二进制浮点运算,这是为了在广域数值范围上提供较为精确 ...

  4. Java BigDecimal negate()方法与示例

    BigDecimal类的negate()方法 (BigDecimal Class negate() method) Syntax: 句法: public BigDecimal negate(); pu ...

  5. 大于3小于4的整数bleem_java中的取整与四舍五入方法实例

    java中的取整与四舍五入方法实例,方式,正数,负数,四舍五入,小数点 java中的取整与四舍五入方法实例 易采站长站,站长之家为您整理了java中的取整与四舍五入方法实例的相关内容. 一.java中 ...

  6. Java BigDecimal add()方法与示例

    BigDecimal类的add()方法 (BigDecimal Class add() method) Syntax: 句法: public BigDecimal add(BigDecimal val ...

  7. Java BigDecimal intValue()方法与示例

    BigDecimal类的intValue()方法 (BigDecimal Class intValue() method) intValue() method is available in java ...

  8. Java BigDecimal restder()方法与示例

    BigDecimal类的restder()方法 (BigDecimal Class remainder() method) Syntax: 句法: public BigDecimal remainde ...

  9. Java BigDecimal toBigIntegerExact()方法(带示例)

    BigDecimal类的toBigIntegerExact()方法 (BigDecimal Class toBigIntegerExact() method) toBigIntegerExact() ...

最新文章

  1. 2021年中国工业互联网安全大赛核能行业赛道writeup之隐写
  2. python accept解析_python中requests库使用方法详解
  3. java RSA加密解密--转载
  4. CUDA学习(九十一)
  5. java 静态对象赋值_基于Java class对象说明、Java 静态变量声明和赋值说明(详解)...
  6. 关于用Restful API下载网易云笔记时遇到的图片外链不能打开的问题
  7. 试验一下纯手写blog
  8. 七年也扶不起的苹果 Siri
  9. dpkg: error: dpkg status database is locked by another process 解决方法
  10. IIS配置Url重写实现http自动跳转https的重定向方法(100%解决)
  11. SQL Server高级查询之常见数据库对象(视图)第五章节
  12. Python爬虫之(八)数据提取-Beautiful Soup
  13. zabbix详解(六)——zabbix 添加监控主机
  14. json转换为对象 java对象数组对象_将json数组转换为java列表对象
  15. Dubbo视频教程--基础篇--第06节--Dubbo管理控制台的安装
  16. 智能车PCB设计思路
  17. Error:Undefined symbol DMA_Cmd (referred from dac.o)
  18. python中pillow是什么意思_Python-pillow
  19. jxcell开发简单实例
  20. Unity3D游戏开发从零单排(六) - 人物运动及攻击连击

热门文章

  1. 【Python面试】——02 type类
  2. 【Discuz】移除移动端论坛底部的 标准版 | 触屏版 | 电脑版 | 客户端
  3. 凡人升天传7——NOIP2010 提高组复赛题解
  4. 芽豆一姐助力「刘仪伟-红旗甄选」首日开播粉丝破十万
  5. EasyUI之datagrid展示数据列表
  6. 解密:古人八拜之交指的是哪八拜?
  7. opencv 4.0.0教程系列01-core模块简介
  8. Excel--Powerquery表格中按月份 业绩汇总
  9. ITU601/656
  10. 创业公司,如何定位品牌,进行品牌营销?