BigDecimal加减乘除及setScale的用法小结
Bigdecimal初始化:
BigDecimal num = new BigDecimal(2.225667);//这种写法不允许,会造成精度损失。
BigDecimal num = new BigDecimal("2.225667");//一般都会这样写最好。
两种方式在下面会有实例比较。
一、setScale
1. ROUND_DOWN
BigDecimal b = new BigDecimal("2.225667").setScale(2, BigDecimal.ROUND_DOWN);System.out.println(b);//2.22 直接去掉多余的位数
2. ROUND_UP
BigDecimal c = new BigDecimal("2.224667").setScale(2, BigDecimal.ROUND_UP);System.out.println(c);//2.23 跟上面相反,进位处理
3. ROUND_CEILING
天花板(向上),正数进位向上,负数舍位向上
BigDecimal f = new BigDecimal("2.224667").setScale(2, BigDecimal.ROUND_CEILING);
System.out.println(f);//2.23 如果是正数,相当于BigDecimal.ROUND_UPBigDecimal g = new BigDecimal("-2.225667").setScale(2, BigDecimal.ROUND_CEILING);
System.out.println(g);//-2.22 如果是负数,相当于BigDecimal.ROUND_DOWN
4. ROUND_FLOOR
地板(向下),正数舍位向下,负数进位向下
BigDecimal h = new BigDecimal("2.225667").setScale(2, BigDecimal.ROUND_FLOOR);
System.out.println(h);//2.22 如果是正数,相当于BigDecimal.ROUND_DOWNBigDecimal i = new BigDecimal("-2.224667").setScale(2, BigDecimal.ROUND_FLOOR);
System.out.println(i);//-2.23 如果是负数,相当于BigDecimal.ROUND_HALF_UP
5. ROUND_HALF_UP
BigDecimal d = new BigDecimal("2.225").setScale(2, BigDecimal.ROUND_HALF_UP);System.out.println("ROUND_HALF_UP"+d); //2.23 四舍五入(若舍弃部分>=.5,就进位)
6. ROUND_HALF_DOWN
BigDecimal e = new BigDecimal("2.225").setScale(2, BigDecimal.ROUND_HALF_DOWN);System.out.println("ROUND_HALF_DOWN"+e);//2.22 四舍五入(若舍弃部分>.5,就进位)
7. ROUND_HALF_EVEN
BigDecimal j = new BigDecimal("2.225").setScale(2, BigDecimal.ROUND_HALF_EVEN);
System.out.println(j);//2.22 如果舍弃部分左边的数字为偶数,则作 ROUND_HALF_DOWN BigDecimal k = new BigDecimal("2.215").setScale(2, BigDecimal.ROUND_HALF_EVEN);
System.out.println(k);//2.22 如果舍弃部分左边的数字为奇数,则作 ROUND_HALF_UPSystem.out.println("************************************");System.out.println("4.05: "+new BigDecimal("4.05").setScale(1, BigDecimal.ROUND_HALF_EVEN));//4.05: 4.0 downSystem.out.println("4.15: "+new BigDecimal("4.15").setScale(1, BigDecimal.ROUND_HALF_EVEN));//4.15: 4.2 upSystem.out.println("4.25: "+new BigDecimal("4.25").setScale(1, BigDecimal.ROUND_HALF_EVEN));//4.25: 4.2 downSystem.out.println("4.35: "+new BigDecimal("4.35").setScale(1, BigDecimal.ROUND_HALF_EVEN));//4.35: 4.4 upSystem.out.println("4.45: "+new BigDecimal("4.45").setScale(1, BigDecimal.ROUND_HALF_EVEN));//4.45: 4.4 downSystem.out.println("4.55: "+new BigDecimal("4.55").setScale(1, BigDecimal.ROUND_HALF_EVEN));//4.55: 4.6 upSystem.out.println("4.65: "+new BigDecimal("4.65").setScale(1, BigDecimal.ROUND_HALF_EVEN));//4.65: 4.6 downSystem.out.println("3.05: "+new BigDecimal("3.05").setScale(1, BigDecimal.ROUND_HALF_EVEN));//3.05: 3.0 downSystem.out.println("3.15: "+new BigDecimal("3.15").setScale(1, BigDecimal.ROUND_HALF_EVEN));//3.15: 3.2 upSystem.out.println("3.25: "+new BigDecimal("3.25").setScale(1, BigDecimal.ROUND_HALF_EVEN));//3.25: 3.2 downSystem.out.println("3.35: "+new BigDecimal("3.35").setScale(1, BigDecimal.ROUND_HALF_EVEN));//3.35: 3.4 upSystem.out.println("3.45: "+new BigDecimal("3.45").setScale(1, BigDecimal.ROUND_HALF_EVEN));//3.45: 3.4 downSystem.out.println("3.55: "+new BigDecimal("3.55").setScale(1, BigDecimal.ROUND_HALF_EVEN));//3.55: 3.6 upSystem.out.println("3.65: "+new BigDecimal("3.65").setScale(1, BigDecimal.ROUND_HALF_EVEN));//3.65: 3.6 down
二、BigDecimal的运算——加减乘除
参考文章:
https://www.jb51.net/article/196541.htm
https://www.jianshu.com/p/042ab4ec63e6
BigDecimal加减乘除及setScale的用法小结相关推荐
- setscale方法的用法_基于BigDecimal.setScale的用法小结
1. BigDecimal num1 = new BigDecimal(2.225667);//这种写法不允许,会造成精度损失 2. BigDecimal num2 = new BigDecimal( ...
- BigDecimal加减乘除,以及四舍五入方法
BigDecimal加减乘除,以及四舍五入 代码实例: 四舍五入模式 代码实例: BigDecimal numO= new BigDecimal("10"); BigDecimal ...
- oracle @spool,Oracle spool 用法小结
Oracle spool 用法小结 转自:http://wallimn.javaeye.com/blog/472182 对于SPOOL 数据的SQL,最好要自己定义格式,以方便程序直接导入,SQL语句 ...
- js push(),pop(),unshift(),shift()的用法小结
js中push(),pop(),unshift(),shift()的用法小结 1.push().pop()和unshift().shift() 这两组同为对数组的操作,并且会改变数组的本身的长度及内容 ...
- C++ :: 的用法小结
原文:http://blog.csdn.net/whz_zb/article/details/6843369 :: 的用法小结: 用于将类内声明的静态数据成员在类外初始化: 用于将类内声明的函数成员在 ...
- Java中getResourceAsStream的用法小结
2019独角兽企业重金招聘Python工程师标准>>> Java中getResourceAsStream的用法小结 一.Java中的getResourceAsStream主要有以下三 ...
- java.nio.ByteBuffer用法小结
转载自 java.nio.ByteBuffer用法小结 在NIO中,数据的读写操作始终是与缓冲区相关联的.读取时信道(SocketChannel)将数据读入缓冲区,写入时首先要将发送的数据按顺序填入 ...
- jsoup解析HTML用法小结
转载自 jsoup解析HTML用法小结 使用HttpClient+jsoup做采集器有一段时间了,发现jsoup很好用,而且还有很多方便的东西都没怎么用上.于是想根据官网上的cookbook来对j ...
- [转]ssh常用用法小结
ssh常用用法小结 1.连接到远程主机: 命令格式 : ssh name@remoteserver 或者 ssh remoteserver -l name 说明:以上两种方式都可以远程登录到远程主机, ...
最新文章
- 为什么说,长跑和爬山能锻炼意志?因为要不停的run,run,run......
- java读取C++结构体,类型转换
- ZetCode Python 教程
- 都2020年了,你还认为BI=报表?
- Python Flask Web 第十一课 —— 使用 Flask-SQLAlchemy 管理数据库
- cut 排序 linux,linux文本查看及处理工具wc, cut, sort, uniq和9道练习题
- ctfmon是什么启动项_Win7启动项找不到ctfmon进程无法正常使用输入法的解决方法...
- solidity教程(二)僵尸攻击人类
- 斐波那契数列Java
- 亲属卡额度是什么意思_疯狂申请“平安大润发卡”,你会白干一场
- 有趣的小事——程序员难!
- HAL - RTC分析
- RASP | 远程Java应用的RASP调试教程
- 如何在一个月内快速瘦20斤?
- Android 应用开发入门
- 【分享】免费的国际一级域名和100M支持asp、cgi空间
- 利用FME自动生成CAD图框
- 卓开发中必备的那些神器APP
- asio(二)、异步定时器
- 通过tushare获取金融数据的方法