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

  1. 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. Redis五种基础与三种高级数据结构解析

    记得点赞+关注呦. 前言 在 Redis 最重要最基础就属 它丰富的数据结构了,Redis 之所以能脱颖而出很大原因是他数据结构丰富,可以支持多种场景.并且 Redis 的数据结构实现以及应用场景在面 ...

  2. 06:Database returned an invalid datetime value. Are time zone definitions for your database installed?

    出现时区问题 解决方案: 修改settings.py的时区变量. 修改前: LANGUAGE_CODE = 'en-us' TIME_ZONE = 'UTC' USE_I18N =True USE_L ...

  3. Spring Boot WebFlu-05——WebFlux 中 Thymeleaf 和 MongoDB 实践

    第05课:WebFlux 中 Thymeleaf 和 MongoDB 实践 前言 本节内容主要还是总结上面两篇内容的操作,并实现一个复杂查询的小案例,那么没安装 MongoDB 的可以进行下面的安装流 ...

  4. 选择合适Redis数据结构,减少80%的内存占用

    redis作为目前最流行的nosql缓存数据库,凭借其优异的性能.丰富的数据结构已成为大部分场景下首选的缓存工具. 由于redis是一个纯内存的数据库,在存放大量数据时,内存的占用将会非常可观.那么在 ...

  5. R语言六种数据类型

    1 向量 1.1 定义向量 向量使用c来赋值,向量中不能混合不同类型的数据 x<-c(2,3,7,6,8)  数值型num y<-("one","two&qu ...

  6. 精尽Spring Boot源码分析 - 剖析 @SpringBootApplication 注解

    该系列文章是笔者在学习 Spring Boot 过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring Boot 源码分析 GitHub 地址 进行阅读 Sprin ...

  7. Harbor镜像仓库

    Harbor镜像仓库 作者 刘畅 时间 2020-7-11 微信 目录 1.下载离线安装包 1 2.安装docker 1 3.安装docker-compose 2 4.自签TLS证书 2 4.1.创建 ...

  8. 企业管理CRM不只是客户录入系统

    企业在举办营销活动或者展会之后,将会收集到大量的客户信息,将这些信息有效地整理.完善.储存也是一个不小的工程.如果您的企业经常面遇到这样的情况,不妨使用Zoho CRM系统来帮您完成.但是,Zoho ...

  9. jenkins pipeline构建后返回构建结果给gitlab

    jenkins pipeline构建后返回构建结果给gitlab 使用场景 gitlab 合并请求时要求管道任务必须成功,否则无法执行合并操作,又不想使用gitlab ci 工具. 实现方法 1.Ge ...

  10. WPF技巧:命中测试在视觉树中的使用

    我们有时候又需求从当前视觉树中找一些东西,比如鼠标按下的时候,看看鼠标下的元素都有什么.又比如某块区域下有哪些元素?某个坐标点下有哪些元素? 这些需求在使用 命中测试的时候,可以非常方便和快速的去找到 ...