当bigdecimal除不尽(循环小数)后会报错,下面的是BigDecimal ,divide方法提供的精确小数方法(推荐使用)

BigDecimal avgCapital = loanAmount.divide(new BigDecimal(monthTotal),2,BigDecimal.ROUND_HALF_UP);

1、ROUND_UP  
舍入远离零的舍入模式。  
在丢弃非零部分之前始终增加数字(始终对非零舍弃部分前面的数字加1)。  
注意,此舍入模式始终不会减少计算值的大小。  
2、ROUND_DOWN  
接近零的舍入模式。  
在丢弃某部分之前始终不增加数字(从不对舍弃部分前面的数字加1,即截短)。  
注意,此舍入模式始终不会增加计算值的大小。  
3、ROUND_CEILING  
接近正无穷大的舍入模式。  
如果 BigDecimal 为正,则舍入行为与 ROUND_UP 相同;  
如果为负,则舍入行为与 ROUND_DOWN 相同。  
注意,此舍入模式始终不会减少计算值。  
4、ROUND_FLOOR  
接近负无穷大的舍入模式。  
如果 BigDecimal 为正,则舍入行为与 ROUND_DOWN 相同;  
如果为负,则舍入行为与 ROUND_UP 相同。  
注意,此舍入模式始终不会增加计算值。  
5、ROUND_HALF_UP  
向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则为向上舍入的舍入模式。  
如果舍弃部分 >= 0.5,则舍入行为与 ROUND_UP 相同;否则舍入行为与 ROUND_DOWN 相同。  
注意,这是我们大多数人在小学时就学过的舍入模式(四舍五入)。  
6、ROUND_HALF_DOWN  
向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则为上舍入的舍入模式。  
如果舍弃部分 > 0.5,则舍入行为与 ROUND_UP 相同;否则舍入行为与 ROUND_DOWN 相同(五舍六入)。  
7、ROUND_HALF_EVEN  
向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则向相邻的偶数舍入。  
如果舍弃部分左边的数字为奇数,则舍入行为与 ROUND_HALF_UP 相同;  
如果为偶数,则舍入行为与 ROUND_HALF_DOWN 相同。  
注意,在重复进行一系列计算时,此舍入模式可以将累加错误减到最小。  
此舍入模式也称为“银行家舍入法”,主要在美国使用。四舍六入,五分两种情况。  
如果前一位为奇数,则入位,否则舍去。  
以下例子为保留小数点1位,那么这种舍入方式下的结果。  
1.15>1.2 1.25>1.2  
8、ROUND_UNNECESSARY  
断言请求的操作具有精确的结果,因此不需要舍入。  
如果对获得精确结果的操作指定此舍入模式,则抛出ArithmeticException。

BigDecimal之除不尽报错的更多相关文章

  1. Java报错:java.math.BigDecimal cannot be cast to java.lang.String

    从数据库取数字,转为string,报错: java.math.BigDecimal cannot be cast to java.lang.String 错误代码 Integer.parseInt(( ...

  2. hibernate报错Unknown integral data type for ids : java.lang.String

    package com.model; // Generated 2016-10-27 14:02:17 by Hibernate Tools 4.3.1.Final /** * CmDept gene ...

  3. elasticsearch查询:启动项目报错No property ... found for...Did you mean '...'?

    网上找的案例是: 实体类字段定义:private String sku_no;dao中接口名定义:Goods findBySkuNo(String skuNo);spring-data按照接口方法定义 ...

  4. Windows 7上执行Cake 报错原因是Powershell 版本问题

    在Windows 7 SP1 电脑上执行Cake的的例子 http://cakebuild.net/docs/tutorials/getting-started ,运行./Build.ps1 报下面的 ...

  5. 关于VS2015 ASP.NET MVC添加控制器的时候报错

    调试环境:VS2015 数据库Mysql  WIN10 在调试过程中出现类似下两图的同学们,注意啦. 其实也是在学习的过程中遇到这个问题的,找了很多资料都没有正面的解决添加控制器的时候报错的问题,还是 ...

  6. php报错 ----> Call to undefined function imagecreatetruecolor()

    刚才在写验证码的时候,发现报错,然后排查分析了一下,原来是所用的php版本(PHP/5.3.13)没有开启此扩展功能. 进入php.ini 找到extension=php_gd2.dll ,将其前面的 ...

  7. scp报错 -bash: scp: command not found

    环境:RHEL6.5 使用scp命令报错: [root@oradb23 media]# scp /etc/hosts oradb24:/etc/ -bash: scp: command not fou ...

  8. VS2015使用scanf报错的解决方案

    1.在程序最前面加: #define _CRT_SECURE_NO_DEPRECATE 2.在程序最前面加: #pragma warning(disable:4996) 3.把scanf改为scanf ...

  9. VS项目中使用Nuget还原包后编译生产还一直报错?

    Nuget官网下载Nuget项目包的命令地址:https://www.nuget.org/packages 今天就遇到一个比较奇葩的问题,折腾了很久终于搞定了: 问题是这样的:我的解决方案原本是好好的 ...

随机推荐

  1. springmvc——mvc:annotation-driven标签的作用

  2. Integer 如何实现节约内存和提升性能的?

    在Java5中,为Integer的操作引入了一个新的特性,用来节省内存和提高性能.整型对象在内部实现中通过使用相同的对象引用实现了缓存和重用. 上面的规则默认适用于整数区间 -128 到 +127(这 ...

  3. NOIP模拟测试10「大佬·辣鸡·模板」

    大佬 显然假期望 我奇思妙想出了一个式子$f[i]=f[i-1]+\sum\limits_{j=1}^{j<=m} C_{k \times j}^{k}\times w[j]$ 然后一想不对得容 ...

  4. hackthebox TheNotebook

    前言 只拿到了user,提权没成功--有wp说是CVE-2019-5736,我没打成. 打点 nmap-sV -v -A 10.10.10.230 端口扫描结果: PORT STATE SERVICE ...

  5. 在vs中调试关闭之后不关闭页面

    在vs中调试api时会自动打开一个新的浏览器窗口,在关闭这个浏览器窗口时,会关闭调试.关闭调试时也会关闭浏览器窗口. 设置成调试时在已有的浏览器中打开调试页面,关闭调试也不会关掉浏览器窗口,反之亦然 ...

  6. moment常用方法

    1.subtract方法,时间加减处理 console.log(moment().format("YYYY-MM-DD HH:mm:ss")); //当前时间 console.lo ...

  7. 关于Word转Markdown的工具Writage安装及使用

    简介 Writage是为希望开始编写结构良好的文档,没有时间或不想深入了解 Markdown 语法的详细信息,或者更愿意使用 Word 作为文本编辑器的每个人设计的 下载并安装 安装包地址:https ...

  8. Docker入门与进阶(上)

    Docker入门与进阶(上) 作者 刘畅 时间 2020-10-17 目录 1 Docker核心概述与安装 1 1.1 为什么要用容器 1 1.2 docker是什么 1 1.3 docker设计目标 ...

  9. 如何获取微信小程序for循环的index

    在微信小程序开发中,对于wx:for,可以使用wx:for-index="index"来获取数组中的元素的索引值(下标). <view class="item&qu ...

  10. CRM客户管理软件如何帮助销售?

    对现代企业来说,销售团队的作用是举足轻重的.这与企业的利益密切相关,因此提高企业的销售绩效是企业的首要目标.CRM客户管理软件能够帮助企业做到以客户为中心,构建及改善客户关系,帮助企业优化业务流程,实 ...