在平常开发中,如果涉及到计算,要求准确的精度,比如单价*数量=总价之类的计算,那么得用到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代码示例的更多相关文章

  1. 高级渲染技巧和代码示例 GPU Pro 7

    下载代码示例 移动设备正呈现着像素越来越高,屏幕尺寸越来越小的发展趋势. 由于像素着色的能耗非常大,因此 DPI 的增加以及移动设备固有的功耗受限环境为降低像素着色成本带来了巨大的压力. MSAA 有 ...

  2. Java8-Function使用及Groovy闭包的代码示例

    导航 定位 概述 代码示例 Java-Function Groovy闭包 定位 本文适用于想要了解Java8 Function接口编程及闭包表达式的筒鞋. 概述 在实际开发中,常常遇到使用模板模式的场 ...

  3. [IOS 开发] 懒加载 (延迟加载) 的基本方式,好处,代码示例

    懒加载的好处: 1> 不必将创建对象的代码全部写在viewDidLoad方法中,代码的可读性更强 2> 每个属性的getter方法中分别负责各自的实例化处理,代码彼此之间的独立性强,松耦合 ...

  4. SELECT控件操作的JS代码示例

    SELECT控件操作的JS代码示例 1 检测是否有选中 if(objSelect.selectedIndex > -1) { //说明选中 } else { //说明没有选中 } 2.动态创建s ...

  5. 转:HIBERNATE一些_方法_@注解_代码示例---写的非常好

    HIBERNATE一些_方法_@注解_代码示例操作数据库7步骤 : 1 创建一个SessionFactory对象 2 创建Session对象 3 开启事务Transaction : hibernate ...

  6. Python实现各种排序算法的代码示例总结

    Python实现各种排序算法的代码示例总结 作者:Donald Knuth 字体:[增加 减小] 类型:转载 时间:2015-12-11我要评论 这篇文章主要介绍了Python实现各种排序算法的代码示 ...

  7. C#与数据库访问技术总结(十五)之 DataAdapter对象代码示例

    DataAdapter对象代码示例 下面的代码将说明如何利用DataAdapter对象填充DataSet对象. private static string strConnect=" data ...

  8. C#与数据库访问技术总结(六)之Command对象创建SQl语句代码示例

    Command对象创建SQl语句代码示例 说明:前面介绍了 Command 对象的方法和一些属性,回顾一下 Command对象主要用来执行SQL语句.利用Command对象,可以查询数据和修改数据. ...

  9. 领域驱动开发推荐代码示例 — Microsoft NLayerApp

    简介: Microsoft NLayerApp是由微软西班牙团队出品的基于.NET 4.0的“面向领域N层分布式架构”代码示例,在codeplex上的地址是:http://microsoftnlaye ...

随机推荐

  1. MySQL--用户管理 pymysql 索引

    目录 用户管理 创建mysql账户 权限管理 涉及到的表 pymysql 索引 语法 结论 用户管理 主要是为了控制权限,让不同的人只能操作只属于只记得那部分数据 创建mysql账户 账户中涉及三个数 ...

  2. Django---Django中使用COOKIE和SESSION

    Django---Django中使用COOKIE和SESSION 一丶Cookie cookie的由来 # HTTP协议是无状态的. # 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请 ...

  3. 【MySQL】MySQL高可用架构之MHA

    一.关于MHA MHA(Master HA)是一款开源的MySQL的高可用程序,它为MySQL主从复制架构提供了automating master failover 功能.MHA在监控到master节 ...

  4. formData详细使用教程

    formData是ajax2.0(XMLHttpRequest Level2)新提出的接口,利用FormData对象可以将form表单元素的name与value进行组合,实现表单数据的序列化,从而介绍 ...

  5. fatal: unable to connect to github.com npm install fail问题

    解决方法 git config --global url."https://".insteadOf git://

  6. 关于ionic2在IOS上点击延迟的问题

    正常的点击事件, 不知道 为什么 ,在IOS上明显会延迟几百毫秒.. 加上tappable属性就可以解决了 <div tappable (click)="doClick()" ...

  7. Python数据分析 之时间序列基础

    1. 时间序列基础 import numpy as np import pandas as pd np.random.seed(12345) import matplotlib.pyplot as p ...

  8. jQuery遍历之find()

    /**案例说明: *首先理清楚find()函数同children()函数之间的区别 * 1. find()会遍历给定节点下的所有的元素节点. * 2. children()之后遍历给定节点下的单一层级 ...

  9. kali 使用John破解zip压缩包的密码

    kali  使用John破解zip压缩包的密码 准备工具: zip压缩包带密码   1个 kali Linux机器       1个 操作步骤: 首先将压缩包上传至kali机器,然后使用zip2joh ...

  10. web api .net C# mvc API返回XML文档的解析并取值

    [HttpGet] public System.Net.Http.HttpResponseMessage GetNotify() { var xmlstring = @" <xml&g ...