Bigdecimal基本运算及小数保留方式枚举

1.Bigdecimal运算

final BigDecimal a = new BigDecimal("2.99");
final BigDecimal b = BigDecimal.valueOf(0.49);
//a+b
final BigDecimal add = a.add(b);
//a-b
final BigDecimal subtract = a.subtract(b);
//a*b
final BigDecimal multiply = a.multiply(b);
//a/b   保留4位小数  四舍五入
final BigDecimal divide = a.divide(b,4,BigDecimal.ROUND_HALF_EVEN);
System.out.println("a+b= "+add);    //输出  3.48
System.out.println("a-b= "+subtract);   //输出  2.50
System.out.println("a*b= "+multiply);   //输出  1.4651
System.out.println("a/b= "+divide); //输出  6.1020

2.Bigdecimal小数保留方式

final BigDecimal a = new BigDecimal("1.5");
//进        结果:2
System.out.println(a.setScale(0,BigDecimal.ROUND_UP));
//舍       结果:1
System.out.println(a.setScale(0,BigDecimal.ROUND_DOWN));
//向下取整       结果:1
System.out.println(a.setScale(0,BigDecimal.ROUND_FLOOR));
//向上取整       结果:2
System.out.println(a.setScale(0,BigDecimal.ROUND_CEILING));
//四舍五入       结果:2
System.out.println(a.setScale(0,BigDecimal.ROUND_HALF_UP));
//五舍六入       结果:1
System.out.println(a.setScale(0,BigDecimal.ROUND_HALF_DOWN));
//银行家舍入  四舍六入五考虑
// A =>五后无数字进1
// B => 五后有数字
//   B1 => 五后非零就进一,
//   B2 => 五后为零看五前奇偶,偶舍,奇进
System.out.println(BigDecimal.valueOf(1.5).setScale(0,BigDecimal.ROUND_HALF_EVEN));   //2
System.out.println(BigDecimal.valueOf(1.51).setScale(0,BigDecimal.ROUND_HALF_EVEN));   //2
System.out.println(BigDecimal.valueOf(1.59).setScale(0,BigDecimal.ROUND_HALF_EVEN));   //2
System.out.println(BigDecimal.valueOf(1.50).setScale(0,BigDecimal.ROUND_HALF_EVEN));   //2
System.out.println(BigDecimal.valueOf(2.50).setScale(0,BigDecimal.ROUND_HALF_EVEN));   //2

注:使用参数为float或double的BigDecimal创建对象会丢失精度。建议不要使用参数为float或double的BigDecimal创建对象。而是采用string字符串来创建对象

Bigdecimal基本运算及小数保留方式枚举相关推荐

  1. java中小数的处理:高精度运算用bigDecimal类,精度保留方法,即舍入方式的指定

    java中小数的处理:高精度运算用bigDecimal类,精度保留方法,即舍入方式的指定 2016年05月11日 11:20:08 阅读数:6336 一. 计算机的小数计算一定范围内精确,超过范围只能 ...

  2. 【SpringBoot】通过自定义注解对BigDecimal输出的小数位数进行格式化

    文章目录 前言 一.JsonSerializer 二.ContextualSerializer 三.实现 1.继承JsonSerializer类,实现ContextualSerializer接口 2. ...

  3. mysql 格式化 小数点后两位_MYSQL数据库mysql格式化小数保留小数点后两位(小数点格式化)...

    <MYSQL数据库mysql格式化小数保留小数点后两位(小数点格式化)>要点: 本文介绍了MYSQL数据库mysql格式化小数保留小数点后两位(小数点格式化),希望对您有用.如果有疑问,可 ...

  4. C语言实现分数转化为小数(保留三位小数)

    C语言实现分数转化为小数(保留三位小数) 第一次写博客,不知道具体如何操作. 直接奉上代码吧,以后有好的算法再分享. #include<stdio.h>int main(){ int a, ...

  5. 全网最全的BigDecimal的newScale(保留小数位)和roundingMode(舍入模式),详细介绍roundingMode(重点)

    一般我们要对一个BigDecimal的数字进行保留小数位和设置舍入模式的时候,都是这样使用的: 对于加.减.乘得到的数字,直接使用BigDecimal对象.setScale,就像这样: 或者除法,在做 ...

  6. BigDecimal 两束运算 保留两位小数

    package com.example.bwjf.demo.util; import java.math.BigDecimal; public class NuberUtil { /***@descr ...

  7. mysql查询结果单位换算后小数位数的保留方式

    1.调用mysql自带的格式化小数函数format(x,d) 例如: [html] view plaincopy select format(23456.789,2);   [html] view p ...

  8. BigDecimal参数8种舍入方式

    1.ROUND_UP 舍入远离零的舍入模式. 在丢弃非零部分之前始终增加数字(始终对非零舍弃部分前面的数字加1). 注意,此舍入模式始终不会减少计算值的大小. 2.ROUND_DOWN 接近零的舍入模 ...

  9. MySql 查询小数保留两位小数

    问题 :有一张表 table_a ,它有字段 c_1,c_2 都是数字类型的,现在想求一行中 c_2 字段占 c_1 字段的百分比,要求小数点后保留两位 SELECT FORMAT((a.c_2/a. ...

最新文章

  1. Bucking the stigma (留学生请摘掉有色眼镜看社区大学)
  2. 家用计算机内存最大是多少,电脑支持最大内存是多少?选用多大内存才合理?方法技巧要知道...
  3. 请概述可视化卷积神经网络的中间输出的基本思想。_卷积神经网络为什么能称霸计算机视觉领域?...
  4. word关闭未响应_大众途观全景天窗遮阳卷帘无法关闭
  5. Wireshark的https代理抓包(whistle中间人代理)
  6. boost实用工具:创建一个禁止复制的类 noncopyable
  7. 【Auto.js】[zip压缩] 将文件夹压缩成zip包
  8. 学习笔记68—PhotoShop常见快捷键
  9. Xtrabackup的“流”及“备份压缩”功能
  10. 单机rust怎么设置白天_工业除尘器不会选 看看粉尘治理设备生产厂家怎么说
  11. SpringBoot之使用(一)
  12. 论文阅读笔记:《Contextual String Embeddings for Sequence Labeling》
  13. 拓端tecdat|Python用GARCH、离散随机波动率模型DSV模拟和估计股票收益时间序列与蒙特卡洛可视化
  14. PostgreSQL 为什么不要滥用unlogged table hash index
  15. 《白帽子讲Web安全》| 学习笔记之访问控制
  16. 中国计算机省份排名,2019中国省份经济排行_中国各省份经济排名
  17. CAD命令输入、结束、重复、撤销
  18. AD18 如何生成装配图
  19. 记录Request + BeautifulSoup爬取中国现代诗歌大全网站上的4000+现代诗的过程
  20. 《人生要耐得住寂寞》

热门文章

  1. python中lowerright_python字符串,从入门到高阶看这篇就够了
  2. 2g 双核电脑 linux,9208)(奔腾双核E5200/2G/320G)电脑详细技术
  3. Kerberos 下运行spark 报错 Requested user hdfs is not whitelisted and has id 995,which is below the minimu
  4. 周志明:职业电竞选手的Java大神路
  5. 如何带领团队“攻城略地”?优秀的架构师这样做
  6. 阿里开发者招聘节 | 面试题02-04:给定一个二叉搜索树(BST),找到树中第K小的节点
  7. 信用算力基于 RocketMQ 实现金融级数据服务的实践
  8. 如何利用 Webshell 诊断 EDAS Serverless 应用
  9. 十余位权威专家深度解读,达摩院2019十大科技趋势点燃科技热情
  10. 浪潮云发布全新“1231”业务战略,打造“一朵分布式云”