BigDecimal代码示例
在平常开发中,如果涉及到计算,要求准确的精度,比如单价*数量=总价之类的计算,那么得用到BigDecimal。
初始化
如下:
BigDecimal amount=new BigDecimal("5.33");
注意,最好不要用double类型来初始化,数值并不准确。
比如
BigDecimal amount=new BigDecimal(0.06);
那么有可能这个BigDecimal会从0.06变成0.059999999,传入double类型来初始化本身就是不精确的。
四舍五入,保留位数
setScale(1);//表示保留以为小数,默认用四舍五入方式
setScale(1,BigDecimal.ROUND_DOWN);//直接删除多余的小数位,如2.35会变成2.3
setScale(1,BigDecimal.ROUND_UP);//进位处理,2.35变成2.4
setScale(1,BigDecimal.ROUND_HALF_UP);//四舍五入,2.35变成2.4
setScaler(1,BigDecimal.ROUND_HALF_DOWN);//2.35变成2.3,如果是5则向下舍
加减乘除、绝对值
加法 add()函数 减法subtract()函数
乘法 multipy()函数 除法divide()函数 绝对值abs()函数
重点注意除法,详细参数为
pubilc BigDecimal divide(BigDecimal divisor, int scale, int roundingMode)
其中divisor为除数,scale为小数点位数, roundingMode表示是否四舍五入。
示例如下:
import java.math.BigDecimal;
public class BigDecimalDivideTest {
public static void main(String[] args) {
BigDecimal bigDecimal1=new BigDecimal(230.08);
BigDecimal bigDecimal2=new BigDecimal(20);
//除法,保留两位,四舍五入
BigDecimal bigDecimal3=bigDecimal1.divide(bigDecimal2,2,BigDecimal.ROUND_HALF_UP);
System.out.println(bigDecimal3);
}
}
常用的数值
常用的常量有BigDecimal.ZERO表示零。
比较大小
注意,比较BigDecimal大小,不要用equals()比较。
比较大小,可以用compareTo()函数。
对于BigDecimal变量a和b,进行a.compareTo(b)的返回结果,
如果返回1,表示a>b;
如果返回0,表示a=b;
如果返回-1,表示a<b。
import java.math.BigDecimal;
public class BigDecimalTest {
public static void main(String[] args) {
BigDecimal detailAmount=new BigDecimal(-11);
BigDecimal positiveDetailAmount=new BigDecimal(11);
int result=BigDecimal.ZERO.compareTo(detailAmount);
int result2=BigDecimal.ZERO.compareTo(positiveDetailAmount);
System.out.println(result);
System.out.println(result2);
}
}
参考资料:
https://blog.csdn.net/haiyinshushe/article/details/82721234
BigDecimal代码示例的更多相关文章
- 高级渲染技巧和代码示例 GPU Pro 7
下载代码示例 移动设备正呈现着像素越来越高,屏幕尺寸越来越小的发展趋势. 由于像素着色的能耗非常大,因此 DPI 的增加以及移动设备固有的功耗受限环境为降低像素着色成本带来了巨大的压力. MSAA 有 ...
- Java8-Function使用及Groovy闭包的代码示例
导航 定位 概述 代码示例 Java-Function Groovy闭包 定位 本文适用于想要了解Java8 Function接口编程及闭包表达式的筒鞋. 概述 在实际开发中,常常遇到使用模板模式的场 ...
- [IOS 开发] 懒加载 (延迟加载) 的基本方式,好处,代码示例
懒加载的好处: 1> 不必将创建对象的代码全部写在viewDidLoad方法中,代码的可读性更强 2> 每个属性的getter方法中分别负责各自的实例化处理,代码彼此之间的独立性强,松耦合 ...
- SELECT控件操作的JS代码示例
SELECT控件操作的JS代码示例 1 检测是否有选中 if(objSelect.selectedIndex > -1) { //说明选中 } else { //说明没有选中 } 2.动态创建s ...
- 转:HIBERNATE一些_方法_@注解_代码示例---写的非常好
HIBERNATE一些_方法_@注解_代码示例操作数据库7步骤 : 1 创建一个SessionFactory对象 2 创建Session对象 3 开启事务Transaction : hibernate ...
- Python实现各种排序算法的代码示例总结
Python实现各种排序算法的代码示例总结 作者:Donald Knuth 字体:[增加 减小] 类型:转载 时间:2015-12-11我要评论 这篇文章主要介绍了Python实现各种排序算法的代码示 ...
- C#与数据库访问技术总结(十五)之 DataAdapter对象代码示例
DataAdapter对象代码示例 下面的代码将说明如何利用DataAdapter对象填充DataSet对象. private static string strConnect=" data ...
- C#与数据库访问技术总结(六)之Command对象创建SQl语句代码示例
Command对象创建SQl语句代码示例 说明:前面介绍了 Command 对象的方法和一些属性,回顾一下 Command对象主要用来执行SQL语句.利用Command对象,可以查询数据和修改数据. ...
- 领域驱动开发推荐代码示例 — Microsoft NLayerApp
简介: Microsoft NLayerApp是由微软西班牙团队出品的基于.NET 4.0的“面向领域N层分布式架构”代码示例,在codeplex上的地址是:http://microsoftnlaye ...
随机推荐
- 谈谈游戏服务端SDK接入
“接sdk其实本质上就是一个对着接口文档写adaptor的工作,重复和无味.” 团队减员,身负多职,上一次调SDK已经可以回溯到游戏测试前夕了... 一般SDK只包含验证和支付功能,绝少部分SDK包含 ...
- Java DbUtils简介
Dbutils,db utils,顾名思义,是一个数据库工具,体积很小,算是一个dao层的小框架. DbUtils是Apache的开源项目,对JDBC进行了轻量级封装,极大地简化了JDBC编程. Db ...
- springboot+MessageSource实现国际化
1.springboot自带,不需要引入任何依赖 2.在resource下建立:i18n/messages.properties 3.在application.yml增加以下内容 spring: ap ...
- Weshop基于Spring Cloud开发的小程序商城系统
WESHOP | 基于微服务的小程序商城系统 Weshop是基于Spring Cloud(Greenwich)开发的小程序商城系统,提供整套公共微服务服务模块,包含用户中心.商品中心.订单中心.营销中 ...
- .NET异步资料收集
个人认为应该是.NET关于并行编程 / 异步编程最权威的内容来源(虽然看起来里面的内容离现在已经好几年了,但是大部分内容都不过时) https://devblogs.microsoft.com/pfx ...
- 分页查询——Hibernate Criteria实现一次查询取得总记录数和分页后结果集
使用Hibernate criteria进行分页查询时,如何实现一次查询取得总记录数和分页后结果集 - bto310 - ITeye博客 https://bto310.iteye.com/blog/1 ...
- prometheus学习系列八: Prometheus Grafana展示平台
在prometheus中,我们可以使用web页面进行数据的查询和展示, 不过展示效果不太理想,这里使用一款专业的展示平台进行展示. grafana安装 # 下载wget https://dl.graf ...
- 【转载】深入剖析自定义View之onMeasure
1.前言 自定义View中我们看到很多都重写了onMeasure方法,那么我们首先得知道onMeasure是做什么的.onMeasure中文意思就是测量,所以它是用于测量View的大小,影响View大 ...
- LINUX基础学习之基础命令(2)--2019-11-18
1.ls :命令(list):列出指定目录下的内容 用法:ls [选项] [文件名...] [root@Redhat-7-43 ~]# which ls alias ls='ls --color=a ...
- python-gitlab 之更改 merge_method
参考: https://docs.gitlab.com/ee/api/projects.html https://python-gitlab.readthedocs.io/en/stable/gl_o ...