当前位置: 首页 > article >正文

Java10-BigDecimal使用(位数、舍入、计算、比较、绝对值)

1、保留位数与舍入

1、BigDecimal.setScale(newScale, roundingMode)方法用于格式化小数点

newScale表示保留位数,roundingMode表示舍入模式,舍入模式一共有8种,其值分别从0到7。

ROUND_UP0;        // 向上舍入,远离零方向舍入
ROUND_DOWN1;        // 向下舍入,向零方向舍入
ROUND_CEILING2;        // 向正无限大方向舍入
ROUND_FLOOR3;        // 向负无限大方向舍入
ROUND_HALF_UP4;        // 四舍五入:向最接近的数字方向舍入,如果与两个相邻数字的距离相等,则向上舍入
ROUND_HALF_DOWN5;        // 五舍四入:向最接近的数字方向舍入,如果与两个相邻数字的距离相等,则向下舍入
ROUND_HALF_EVEN6;        // 向最接近数字方向舍入,如果与两个相邻数字的距离相等,则向相邻的偶数舍入
ROUND_UNNECESSARY7;        // 用于断言请求的操作具有精确结果,因此不发生舍入

roundingMode参数在书写过程中可以用左边的写法,也可以用右边值代替。

举例:

public static void main(String[] args) throws ParseException {
    BigDecimal data = new BigDecimal("2.346");
    BigDecimal data1 = data.setScale(2,4); // 四舍五入
    BigDecimal data2 = data.setScale(2,BigDecimal.ROUND_HALF_UP);// 四舍五入
    BigDecimal data3 = data.setScale(2, BigDecimal.ROUND_UP);// 向上取入
    BigDecimal data4 = data.setScale(2,BigDecimal.ROUND_DOWN); // 向下取入
    BigDecimal data5 = data.setScale(2,BigDecimal.ROUND_HALF_EVEN);//向最接近的舍入,如果与两个相邻数字的距离相等,则向相邻的偶数舍入
    System.out.println(data1); // 2.35
    System.out.println(data2); // 2.35
    System.out.println(data3); // 2.35
    System.out.println(data4); // 2.34
    System.out.println(data5); // 2.35
}

2、加减乘除计算

2.1 加法 add()
2.2 减法 subtract()
2.3 乘法 multiply()
2.4 除法 divide()

举例:

public static void main(String[] args) throws ParseException {
    BigDecimal data1 = new BigDecimal("2.346");
    BigDecimal data2 = new BigDecimal("2.3");
    System.out.println(data1.add(data2)); // 4.646
    System.out.println(data1.subtract(data2)); // 0.046
    System.out.println(data1.multiply(data2)); // 5.3958
    System.out.println(data1.divide(data2)); // 2.02
}

3、大小比较

BigDecimal使用compareTo() 方法比较大小,输出为0则相等,为1则前面的大,为-1则后面的大
举例:

public static void main(String[] args) throws ParseException {
    BigDecimal data1 = new BigDecimal("2.346");
    BigDecimal data2 = new BigDecimal("2.3");
    if (data1.compareTo(data2) == 0) {
        System.out.println("相等");
    }
    if (data1.compareTo(data2) > 0) {
        System.out.println("data1大"); // 输出
    }
    if (data1.compareTo(data2) < 0) {
        System.out.println("data1小");
    }
}

4、绝对值

4.1 直接获取绝对值:abs()

 BigDecimal data1 = new BigDecimal("-2.346");
 System.out.println(data1.abs()); //2.346

4.2 获取绝对值指定精度:abs(MathContext)

 MathContext mc = new MathContext(2);
 BigDecimal data1 = new BigDecimal("-2.346");
 System.out.println(data1.abs(mc));//2.3

http://www.kler.cn/a/229554.html

相关文章:

  • HTTP详解——HTTP基础
  • MySQL(高级特性篇) 04 章——逻辑架构
  • EasyExcel - 行合并策略(二级列表)
  • Http 响应状态码 前后端联调
  • 网络原理(三)—— 传输层 之 UDP 和 TCP协议
  • Django Admin 自定义操作封装
  • git rebase # |REBASE 1/1 #rebase in progress; onto
  • 可解释性AI(XAI)的主要实现方法和研究方向
  • 生物素-PEG4-酪胺,Biotin-PEG4-TSA,应用于酶联免疫吸附实验
  • containerd中文翻译系列(七)远程快照器
  • Java-并发高频面试题-2
  • 使用pygame建立一个简单的使用键盘方向键移动的方块小游戏
  • STM32内部Flash
  • 五、Redis之发布订阅及事务管理
  • Postman发送带登录信息的请求
  • 第43章 弗莱纳公式准备1 空间曲面坐标 ,梯度解释
  • 升级Oracle 单实例数据库19.3到19.22
  • 车位检测,YOLOV8,OPENCV调用
  • 单点登录怎么做?SSO实现原理和优势总结
  • 力扣面试150 数字范围按位与 公共前缀 位运算
  • 软件行业项目管理的优化策略与实施指南
  • Python调用matlab程序
  • 支持534种语言,开源大语言模型MaLA-500
  • 「云原生可观测团队」获选「InfoQ 年度技术内容贡献奖」
  • 实体类和Map类型相互转换
  • 5.0 ZooKeeper 数据模型 znode 结构详解