java基础-BigDecimal类常用方法介绍
java基础-BigDecimal类常用方法介绍
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.BigDecimal类概述
我们知道浮点数的计算结果是未知的。原因是计算机二进制中,表示浮点数不精确造成的。这个时候你需要一个超级大型的浮点数据,并且提供高精度的浮点运算,也就是我们要说的BigDecimal。
不可变的、任意精度的有符号十进制数。BigDecimal 由任意精度的整数非标度值 和 32 位的整数标度 (scale) 组成。如果为零或正数,则标度是小数点后的位数。如果为负数,则将该数的非标度值乘以 10 的负 scale 次幂。因此,BigDecimal 表示的数值是 (unscaledValue × 10-scale)。BigDecimal 类提供以下操作:算术、标度操作、舍入、比较、哈希算法和格式转换。toString() 方法提供 BigDecimal 的规范表示形式。
BigDecimal 类使用户能完全控制舍入行为。如果未指定舍入模式,并且无法表示准确结果,则抛出一个异常;否则,通过向该操作提供适当的 MathContext 对象,可以对已选择的精度和舍入模式执行计算。在任何情况下,可以为舍入控制提供八种舍入模式。使用此类(例如,ROUND_HALF_UP)中的整数字段来表示舍入模式已过时;应改为使用 RoundingMode enum(例如,RoundingMode.HALF_UP)的枚举值。
二.BigDecimal类实现加法,减法和乘法的案例展示
/*
@author :yinzhengjie
Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
EMAIL:y1053419035@qq.com
*/ package cn.org.yinzhengjie.demo; import java.math.BigDecimal; public class BigDecimalDemo {
public static void main(String[] args) {
function();
} public static void function() {
BigDecimal a = new BigDecimal("0.009");
BigDecimal b = new BigDecimal("0.001");
//计算a+b的和,调用add方法
BigDecimal sum = a.add(b);
System.out.println(sum); BigDecimal x = new BigDecimal("1.1");
BigDecimal y = new BigDecimal("0.28");
BigDecimal sub = x.subtract(y);
System.out.println(sub); BigDecimal m = new BigDecimal("3.14");
BigDecimal n = new BigDecimal("100");
BigDecimal mul = m.multiply(n);
System.out.println(mul);
}
} /*
以上代码执行结果如下:
0.010
0.82
314.00
*/
三.BIgDecimal类实现除法
/*
@author :yinzhengjie
Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
EMAIL:y1053419035@qq.com
*/ package cn.org.yinzhengjie.demo; import java.math.BigDecimal; public class BigDecimalDemo {
public static void main(String[] args) {
function();
} public static void function() {
BigDecimal a = new BigDecimal("9.8");
BigDecimal b = new BigDecimal("3");
//计算a/b的商,调用divied方法,
// BigDecimal div = a.divide(b); //如果除不尽的话会抛出异常:java.lang.ArithmeticException。
// BigDecimal div = a.divide(b,3,BigDecimal.ROUND_UP); //保留三位小数,向上加1
// BigDecimal div = a.divide(b,3,BigDecimal.ROUND_DOWN); //保留三位小数,直接舍去
// BigDecimal div = a.divide(b,3,BigDecimal.ROUND_HALF_UP); //保留三位小数,当ROUND_HALF_UP>=0.5时,和ROUND_UP功能相同(即向上加1)。
BigDecimal div = a.divide(b,3,BigDecimal.ROUND_HALF_DOWN); //保留三位小数,如果舍弃部分>0.5时,则舍入行为与ROUN_UP相同(向上加1),否则舍入行为与ROUND_DOWN相同。
System.out.println(div);
}
} /*
以上代码执行结果如下:
3.267
*/
java基础-BigDecimal类常用方法介绍的更多相关文章
- java基础-BigInteger类常用方法介绍
java基础-BigInteger类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.BigInteger类概述 Java中long型为最大整数类型,对于超过long ...
- java基础-Arrays类常用方法介绍
java基础-Arrays类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Array类的概念 此类包含用来操作数组(比如排序和搜索)的各种方法.需要注意,如果指定 ...
- java基础-Math类常用方法介绍
java基础-Math类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Math类概念 Math 类包含用于执行基本数学运算的方法,如初等指数.对数.平方根和三角函 ...
- java基础-System类常用方法介绍
java基础-System类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.System类概念 在API中system类介绍的比较简单,我们给出定义,system中 ...
- java基础-Integer类常用方法介绍
java基础-Integer类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在实际程序使用中,程序界面上用户输入的数据都是以字符串类型进行存储的.而程序开发中,我们需 ...
- Java基础-Calendar类常用方法介绍
Java基础-Calendar类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Calendar类概念 Calendar 类是一个抽象类,它为特定瞬间与一组诸如 Y ...
- Java基础-Date类常用方法介绍
Java基础-Date类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.毫秒值概念 我们在查阅Date类的API文档时,会发现这样的一句话:"The cl ...
- Java中BigDecimal类介绍及用法
Java中提供了大数字(超过16位有效位)的操作类,即 java.math.BinInteger 类和 java.math.BigDecimal 类,用于高精度计算. 其中 BigInteger 类是 ...
- Java中BigDecimal类的常用方法
1.简介 BigDecimal类位于java.math.BigDecimal包下.使用此类可以完成大的小数操作,而且也可以使用此类进行精确的四舍五入,这一点在开发中经常使用. 对于不需要任何准确计算精 ...
随机推荐
- 第三周vim入门学习2
一.vim重复命令 1.重复执行上次命令 在普通模式下.(小数点)表示重复上一次的命令操作 拷贝测试文件到本地目录 $ cp /etc/protocols . 打开文件进行编辑 $ vim proto ...
- 如何知道一个App的包名呢
包名(Package name)是Android系统中判断一个APP的唯一标识 记录我获取包名的几种方式 方法一:通过cmd命令,打开你要获取包名的APP 1.adb shell 2.dumpsys ...
- Head First Java & final
- C语言中的strstr函数
转自:http://www.cnblogs.com/xy-kidult/archive/2012/12/25/2832460.html 早上翻<C和指针>,碰见一个子串查找问题,这个问题在 ...
- 谷歌地图api 开发 (转载)
https://www.cnblogs.com/520lin/p/5800024.html
- JS获取地址栏中的链接URL参数
function getUrlParam(name){ var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&am ...
- PHP 常用函数总结(三)
7.PHP JSON 格式 json_encode ( mixed $value [, int $options = 0 [, int $depth = 512 ]] ) 返回字符串,包含了 valu ...
- 【vue】router-link 与 router-view
1 router-link <router-link :to="{ path: '/hello', component: HelloWorld }">hello< ...
- mysql索引建多了有什么坏处
建立索引常用的规则如下: 1.表的主键.外键必须有索引: 2.数据量超过300的表应该有索引:3.经常与其他表进行连接的表,在连接字段上应该建立索引: 4.经常出现在Where子句中的字段,特别是大表 ...
- nginx实现ldap认证
1.安装依赖. yum -y install openldap-devel yum install pcre pcre-devel -y yum -y install openssl openssl- ...