BigDecimal使用以及异常处理
来源:互联网 发布:淘宝流量钱包流量充值 编辑:程序博客网 时间:2024/05/17 21:55
- 对商品的价格进行格式化,比如所有商品的价格保留两位小数
/** * * @param bd 商品的价格 * @param num 保留几位小数,如num = 2 * @return */ public static String formatPrice(BigDecimal bd,int num){ if(bd == null || num < 0){ return null; } bd = bd.setScale(num, BigDecimal.ROUND_HALF_UP); return bd + ""; }
其中BigDecimal.ROUND_HALF_UP表示采用"四舍五入"的模式处理价格
- 将商品的价格由元转为分,便于前端分隔展现
/** * 元转换为分 * @param bd 商品的价格 * @return */ public static String yuanToCent(BigDecimal bd){ if(bd == null){ return null; } bd = bd.multiply(new BigDecimal(100)).setScale(0, BigDecimal.ROUND_HALF_EVEN); return bd + ""; }
其中setScale(0, BigDecimal.ROUND_HALF_EVEN)表示采用"四舍五入"的模式处理价格,并且结果不保留小数.
异常处理:
用BigDecimal进行除法计算时抛出java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result异常.
比如用new BigDecimal(30).divide(new BigDecimal(7))就会抛这个异常,异常原因:BigDecimal的divide方法进行除法时当不整除,出现无限循环小数时,就会抛这个异常.
解决办法:
给divide设置精确的小数点位数或”舍入”模式,如
`new BigDecimal(30).divide(new BigDecimal(7), BigDecimal.ROUND_HALF_UP).setScale(2,BigDecimal.ROUND_HALF_UP)`
或
new BigDecimal(30).divide(new BigDecimal(7), 2, BigDecimal.ROUND_HALF_UP)
建议采用第二种方式,因为第二种方式的结果精度更高
0 0
- BigDecimal使用以及异常处理
- 处理BigDecimal非整除异常
- 处理BigDecimal空指针异常
- Hibernate异常以及处理
- 异常以及处理
- 异常处理以及引申
- 使用BigDecimal处理Java中的小数
- Java 使用BigDecimal类处理高精度计算
- android webview 使用以及一些常见的异常处理
- android webview 使用以及一些常见的异常处理
- freemarker中的null异常处理以及!与??的使用
- 使用springmvc+urlRewrite实现404,500以及异常的处理
- SurfaceView的使用以及空指针异常的处理
- freemarker中的null异常处理以及!与??的使用
- python3爬虫(8):异常处理以及代理的使用
- 异常种类以及处理办法
- 读取txt,以及异常处理
- C++异常以及错误处理
- BZOJ4170 极光(CDQ分治 或 树套树)
- 项目3:小试循环---(5)求m!
- Java类加载器
- poj1603(最短路)
- DeepLearning--Part2--Chapter6:Feedforward-Deep-Networks(1)
- BigDecimal使用以及异常处理
- n-1 个数中三个数乘积最大的最小公倍数
- 51nod 1347 旋转字符串
- UIActivityViewController头文件学习
- DeepLearning--Part3--Chapter16:Representation Learning(1) categories:
- JAVA帮助文档全系列说明
- sqlite3 笔记整理
- tomcat单个ip配置多个域名及配置用户角色查看服务器状态
- hdu2196(树的直径)