博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java基础-BigDecimal类常用方法介绍
阅读量:6249 次
发布时间:2019-06-22

本文共 2807 字,大约阅读时间需要 9 分钟。

              java基础-BigDecimal类常用方法介绍

                                  作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

 

 

 

 

一.BigDecimal类概述

   我们知道浮点数的计算结果是未知的。原因是计算机二进制中,表示浮点数不精确造成的。这个时候你需要一个超级大型的浮点数据,并且提供高精度的浮点运算,也就是我们要说的BigDecimal。

  不可变的、任意精度的有符号十进制数。BigDecimal 由任意精度的整数非标度值 和 32 位的整数标度 (scale) 组成。如果为零或正数,则标度是小数点后的位数。如果为负数,则将该数的非标度值乘以 10 的负 scale 次幂。因此,BigDecimal 表示的数值是 (unscaledValue × 10-scale)BigDecimal 类提供以下操作:算术、标度操作、舍入、比较、哈希算法和格式转换。toString() 方法提供 BigDecimal 的规范表示形式。

  BigDecimal 类使用户能完全控制舍入行为。如果未指定舍入模式,并且无法表示准确结果,则抛出一个异常;否则,通过向该操作提供适当的 对象,可以对已选择的精度和舍入模式执行计算。在任何情况下,可以为舍入控制提供八种舍入模式。使用此类(例如,ROUND_HALF_UP)中的整数字段来表示舍入模式已过时;应改为使用 RoundingMode enum(例如,RoundingMode.HALF_UP)的枚举值。  

  

二.BigDecimal类实现加法,减法和乘法的案例展示

1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/ 4 EMAIL:y1053419035@qq.com 5 */ 6  7 package cn.org.yinzhengjie.demo; 8  9 import java.math.BigDecimal;10 11 public class BigDecimalDemo {12     public static void main(String[] args) {13         function();14     }15     16     public static void function() {17         BigDecimal a = new BigDecimal("0.009");18         BigDecimal b = new BigDecimal("0.001");19         //计算a+b的和,调用add方法20         BigDecimal sum = a.add(b);21         System.out.println(sum);22         23         BigDecimal x = new BigDecimal("1.1");24         BigDecimal y = new BigDecimal("0.28");25         BigDecimal sub = x.subtract(y);26         System.out.println(sub);27         28         BigDecimal m = new BigDecimal("3.14");29         BigDecimal n = new BigDecimal("100");30         BigDecimal mul = m.multiply(n);31         System.out.println(mul);32     }33 }34 35 36 37 /*38 以上代码执行结果如下:39 0.01040 0.8241 314.0042 */

 

三.BIgDecimal类实现除法

 

1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/ 4 EMAIL:y1053419035@qq.com 5 */ 6  7 package cn.org.yinzhengjie.demo; 8  9 import java.math.BigDecimal;10 11 public class BigDecimalDemo {12     public static void main(String[] args) {13         function();14     }15     16     public static void function() {17         BigDecimal a = new BigDecimal("9.8");18         BigDecimal b = new BigDecimal("3");19         //计算a/b的商,调用divied方法,20 //        BigDecimal div = a.divide(b);    //如果除不尽的话会抛出异常:java.lang.ArithmeticException。21 //        BigDecimal div = a.divide(b,3,BigDecimal.ROUND_UP);    //保留三位小数,向上加122 //        BigDecimal div = a.divide(b,3,BigDecimal.ROUND_DOWN);    //保留三位小数,直接舍去23 //        BigDecimal div = a.divide(b,3,BigDecimal.ROUND_HALF_UP);    //保留三位小数,当ROUND_HALF_UP>=0.5时,和ROUND_UP功能相同(即向上加1)。24         BigDecimal div = a.divide(b,3,BigDecimal.ROUND_HALF_DOWN);    //保留三位小数,如果舍弃部分>0.5时,则舍入行为与ROUN_UP相同(向上加1),否则舍入行为与ROUND_DOWN相同。25         System.out.println(div);26     }27 }28 29 30 31 /*32 以上代码执行结果如下:33 3.26734 */

 

你可能感兴趣的文章
美国教授:Facebook等社交媒体的使用将对美国经济造成负面影响
查看>>
呼叫中心质检团队的“重要性”
查看>>
360良医2.0 一个规范的智能医疗信息平台,才能推动互联网医疗
查看>>
React+Redux打造“NEWS EARLY”单页应用 一步步让你理解最前沿技术栈的真谛
查看>>
《Tableau数据可视化实战》——1.6节从剪贴板上粘贴
查看>>
研究人员开发自治 Android 应用创建网状网
查看>>
Google 的总结陈词:Android 是从零开始构建的
查看>>
《Adobe Acrobat X中文版经典教程》—第1章1.6节在全屏模式下查看PDF演示文稿
查看>>
《Kali Linux渗透测试的艺术》—8章8.4节啖以重利
查看>>
Mac 环境下 Nginx + Tomcat集群, 测试OK
查看>>
高中生开发 Chrome 插件,帮助色盲患者更为清晰的看到网上图片
查看>>
《ANSYS Workbench 14有限元分析自学手册》——1.2 ANSYS Workbench分析的基本过程
查看>>
log4jdbc 数据库访问日志框架使用
查看>>
《Stata统计分析与应用(第2版)》一第2章 Stata中的数据处理
查看>>
《电脑音乐制作实战指南:伴奏、录歌、MTV全攻略》——2.7 消除歌曲中某个合音或乐器...
查看>>
谁是 2015 年推动开源技术的十大领军人物?
查看>>
《Bootstrap开发精解:原理、技术、工具及最佳实践》一2.6 下载Bootstrap源代码...
查看>>
Ubuntu Tweak 项目正式终止,相关站点关闭
查看>>
J2Cache 已经提交到 Maven 中央库
查看>>
《计算机网络:自顶向下方法(原书第6版)》一2.1 应用层协议原理
查看>>