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中所有的的舍入模式 希望大家有所收获

  • 相关阅读:
    运营设计方法论
    使用 typescript ,提升 vue 项目的开发体验(2)
    PAT 1078. 字符串压缩与解压
    PAT 1077. 互评成绩计算
    PAT 1076. Wifi密码
    PAT 1075. 链表元素分类
    PAT 1074. 宇宙无敌加法器
    PAT 1073. 多选题常见计分法
    PAT 1072. 开学寄语
    PAT 1071. 小赌怡情
  • 原文地址:https://www.cnblogs.com/j-1-z-2-s-3/p/13247146.html
Copyright © 2011-2022 走看看