在银行、帐户、计费等领域,BigDecimal提供了精确的数值计算。其中8种舍入方式值得掌握。

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。

因为我们是属于互联网金融行业,所有在进行计算的时候尽量使用ROUND_HALF_EVEN    银行家舍入法

java round half even_BigDecimal.ROUND_HALF_XXX的各种用法相关推荐

  1. Java生成随机数的几种高级用法

    转载自 进阶 | Java生成随机数的几种高级用法! 言归正传,众所周知,随机数是任何一种编程语言最基本的特征之一.而生成随机数的基本方式也是相同的:产生一个0到1之间的随机数.看似简单,但有时我们也 ...

  2. JAVA中的break[标签]continue[标签]用法

    原文:JAVA中的break[标签]continue[标签]用法 注意:JAVA中的标签必须放在循环之前,且中间不能有其他语句.例如:tag:for或while或do--while; 1.使用brea ...

  3. 【零基础学Java】—final关键字与四种用法(二十九)

    [零基础学Java]-final关键字与四种用法(二十九) 一.final关键字 final关键字代表最终.不可改变的 常见的四种用法: 可以用来修饰一个类 可以用来修饰一个方法 可以用来修饰一个局部 ...

  4. 【零基础学Java】—this关键字的三种用法+Java继承的三个特点(二十一)

    [零基础学Java]-this关键字的三种用法+Java继承的三个特点(二十一) 一.this关键字的三种用法 在本类的成员方法中,访问本类的成员变量 在本类的成员方法中,访问本类的另一个成员方法 在 ...

  5. java提示框easyui风格_[Java教程]jQuery EasyUI 提示框(Messager)用法

    [Java教程]jQuery EasyUI 提示框(Messager)用法 0 2013-10-10 19:00:06 jQuery EasyUI 提示框(Messager)不仅强大,而且也不用任何的 ...

  6. java中Collections.sort() 排序函数的用法

    java中Collections.sort() 排序函数的用法: 用Collections.sort方法对list排序有两种方法 第一种是list中的对象实现Comparable接口,如下: /** ...

  7. 12 java中instanceof运算符的意义和用法

    java中instanceof运算符的意义和用法 instanceof运算符是用来在运行时指出对象是否是特定类的一个实例.instanceof通过返回一个布尔值来标识该对象是否为特定类或者它的子类的一 ...

  8. Java getParentFile().mkdirs()用法

    Java getParentFile().mkdirs()用法 getParentFile(); getParentFile()的作用是获得父目录 文件路径最后一层会被默认为是一个文件 例如 URL ...

  9. java path类_基于java Files类和Paths类的用法(详解)

    Java7中文件IO发生了很大的变化,专门引入了很多新的类: import java.nio.file.DirectoryStream; import java.nio.file.FileSystem ...

最新文章

  1. 最让程序员自豪的事情是什么?
  2. 云校庆系列活动 | 软件定义新基建,数据驱动新未来
  3. BCH的压力测试其实已经开始了
  4. [:zh]<机械课程设计>五种表格自动填写部分[:]2017-12-23
  5. 【新书推荐】《ASP.NET Core微服务实战:在云环境中开发、测试和部署跨平台服务》 带你走近微服务开发...
  6. jmap, jhat, jvisualvm:java堆内存对象分析利器
  7. Hibernate如何存储二级缓存条目
  8. Android开发系列(十二) QQ联系人列表升级版——ListView和ScrollView高阶使用方法...
  9. ECMAScript:客户端脚本语言的标准
  10. SpringMVC小结(四)
  11. Java中,成员内部类的常见修饰符及应用 成员内部类不是静态的,访问的格式...
  12. Asp.net Controller中View 和Action方法认证Authorize 及对AuthorizeAttribute扩展
  13. 微信小程序文件下载---视频,图片。
  14. 2021-2027全球与中国射频发生器市场现状及未来发展趋势
  15. 【转】String求求你别秀了
  16. phoenix 安装以及开启后报错
  17. 短视频高流量的秘诀,上热门全靠这些技巧
  18. java rtc alarm_rtc关机闹钟4 AlarmManagerService.java
  19. unity气流模拟效果
  20. linux系统换硬件要重装,换cpu要重装系统吗?电脑更换cpu需要重装系统吗

热门文章

  1. 文心一言,中文版AI正在崛起吗?
  2. mac 如何访问局域网内的共享盘
  3. mysql数据库表设计——如何对图片进行存储
  4. macbook install php zend opcache,Zend Opcache 安装配置
  5. JFrame登录注册
  6. PHP业务中发短信功能
  7. 上云说丨上云迁移——快,准,稳!
  8. 在程序设计中思想(算法)的重要性(2013.10.7)
  9. Markdown 如何设置图片的宽度?
  10. NFT空投预售的几种方法