zoukankan      html  css  js  c++  java
  • BigDecimal中的8中舍入模式详解

    大家好 我是心安君 这是我在博客园的第3篇博客  这里和大家分享一下关于BigDecimal中8中舍入模式的解析

    因为java底层的原因 输出double类型时会有微小误差   我们平常不涉及金额的项目中 这点误差可以忽略不计 但是如果我们在做与金额换算有关的项目时 比如银行一周的汇入量 这时候因为数据量巨大 所以即使微小的误差也会被放大 这个时候我们就不能再使用double类型的数据来表示金额了 所以就引进了BigDecimal类 当我们用它带字符串的构造器创建对象的时候 他是不会有精度损失的 所以用他做金额方面的换算非常适合   

    BigDecimal类还有个特点就是它使我们用户完全控制数据的舍入模式  如果我们要将基本数据类型的数值格式化需要用到printf或者Math之类的方法,其实它们提供的舍入方法很少且不方便. 所以我们一般使用BigDecimal类来对数据进行舍入    一般都会调用到这个方法 : setScale(保留小数,舍入方法)

    所以我们现在就来了解下BigDecimal中的8中舍入模式分别有什么作用

    1. ROUND_UP  : 这种舍入模式是向远离0的方向舍入 比方说 -4.4 进行舍入就是 -5 ;   7.3进行舍入就是8;

    2.ROUND_DOWN : 这种舍入模式和UP相反 是接近0的方向舍入 比方说-4.7进行舍入就是-4  ;  7.6进行舍入就是7;

    3.ROUND_CEILING 向正无穷大取整 

    4.ROUND_FLOOR:  向负无穷大取整

    5.ROUND_HALF_UP : 这就是我们熟知的"四舍五入"

    6.ROUND_HALF_DOWM : "五舍六入"

    7.ROUND_HALF_EVEN : 向"最接近的"数字舍入,如果两个相邻数字距离相等,则向相邻的偶数舍入. 比如-5.5就向-6舍入 

    8.ROUND_UNNECESSARY : 这个模式名副其实,确实是"unnecessary",其实就和没设置精度一样, 如果相除的结果不是精确值 则抛出一个ArithmeticException 异常. 

    这就是BigDecimal中所有的的舍入模式 希望大家有所收获

  • 相关阅读:
    C#枚举(一)使用总结以及扩展类分享
    .NET使用DinkToPdf将HTML转成PDF
    .NET使用MailKit进行邮件处理
    socket+django
    mysql 修改编码格式
    django中Model表的反向查询
    浅谈 session 会话的原理
    浅谈 django Models中的跨表
    django Models 常用的字段和参数
    encoding/xml
  • 原文地址:https://www.cnblogs.com/j-1-z-2-s-3/p/13247146.html
Copyright © 2011-2022 走看看