Java BigDecimal的基本使用方法
1、对于不需要任何准确计算精度的数字可以直接使用float或double,但是如果需要精确计算的结果,则必须使用BigDecimal类
| 2、运算速度比一般的+、-、*、/要快 |
3、基本方 法描 述
| add(BigDecimal)BigDecimal对象中的值相加,然后返回这个对象。 | |||||||||||||||||||
| subtract(BigDecimal)BigDecimal对象中的值相减,然后返回这个对象。 | |||||||||||||||||||
| multiply(BigDecimal)BigDecimal对象中的值相乘,然后返回这个对象。 | |||||||||||||||||||
| divide(BigDecimal)BigDecimal对象中的值相除,然后返回这个对象。 | |||||||||||||||||||
| toString()将BigDecimal对象的数值转换成字符串。 | |||||||||||||||||||
| doubleValue()将BigDecimal对象中的值以双精度数返回。 | |||||||||||||||||||
| floatValue()将BigDecimal对象中的值以单精度数返回。 | |||||||||||||||||||
| longValue()将BigDecimal对象中的值以长整数返回。 | |||||||||||||||||||
| intValue()将BigDecimal对象中的值以整数返回。 | |||||||||||||||||||
| money.divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_DOWN);除100,保留2位小数,四舍五入 |
4、BigDecimal.setScale()方法用于格式化小数点
| 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则向下舍 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 注释: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| scale指的是你小数点后的位数。比如123.456则score就是3. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| score()就是BigDecimal类中的方法啊。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 比如:BigDecimal b = new BigDecimal("123.456"); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| b.scale(),返回的就是3. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| # | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| roundingMode是小数的保留模式。它们都是BigDecimal中的常量字段,有很多种。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 比如:BigDecimal.ROUND_HALF_UP表示的就是4舍5入。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| # | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| pubilc BigDecimal divide(BigDecimal divisor, int scale, int roundingMode) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 的意思是说:我用一个BigDecimal对象除以divisor后的结果,并且要求这个结果保留有scale个小数位, roundingMode表示的就是保留模式是什么,是四舍五入啊还是其它的,你可以自己选! |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 4:对于一般add、subtract、multiply方法的小数位格式化如下: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| BigDecimal mData = new BigDecimal("9.655").setScale(2, BigDecimal.ROUND_HALF_UP); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| System.out.println("mData=" + mData); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ----结果:----- mData=9.66 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
5、与0比较
| 标准做法 | |||||||||||||||||||
| int r=big_decimal.compareTo(BigDecimal.Zero); //和0,Zero比较 | |||||||||||||||||||
| if(r==0) //等于 | |||||||||||||||||||
| if(r==1) //大于 | |||||||||||||||||||
| if(r==-1) //小于 | |||||||||||||||||||
| 或者 | |||||||||||||||||||
| if(big_decimal.equals(BigDecimal.Zero)) //是否等于0 | |||||||||||||||||||
Java BigDecimal的基本使用方法的更多相关文章
- java bigDecimal and double
Java BigDecimal和double BigDecimal是Java中用来表示任意精确浮点数运算的类,在BigDecimal中,使用unscaledValue × 10-scale来表示一 ...
- Java 小技巧和在Java避免NullPonintException的最佳方法(翻译)
前几天就g+里面看到有人引用这篇博文.看了一下.受益颇多. 所以翻译过来,希望和大家一起学习.本人英语水平有限,假设有错,请大家指正. 原文地址(须要翻墙):http://ja ...
- 理解JAVA - 面向对象(object) - 属性,方法
理解JAVA - 面向对象(object) - 属性,方法 多态的体现: 向上造型,父类接收子类对象:向上造型: 从父类角度看不到子类独有的方法:面向对象,人类认知世界的方式:生活中每天都 ...
- Java 字符串拼接 五种方法的性能比较分析 从执行100次到90万次
[请尊重原创版权,如需引用,请注明来源及地址] > 字符串拼接一般使用“+”,但是“+”不能满足大批量数据的处理,Java中有以下五种方法处理字符串拼接,各有优缺点,程序开发应选择合适的方法实现 ...
- 工作随笔——Java调用Groovy类的方法、传递参数和获取返回值
接触Groovy也快一年了,一直在尝试怎么将Groovy引用到日常工作中来.最近在做一个功能的时候,花了点时间重新看了下Java怎么调用Groovy的方法.传递参数和获取返回值. 示例Groovy代码 ...
- java 调用webservice的各种方法总结
java 调用webservice的各种方法总结 几种流行的开源WebService框架Axis1,Axis2,Xfire,CXF,JWS比较 方法一:创建基于JAX-WS的webservice(包括 ...
- Java 获取当前系统时间方法比较
转载: http://blog.csdn.net/zzjjiandan/article/details/8372617 一. 获取当前系统时间和日期并格式化输出: import java.util.D ...
- JAVA下的Thread.sleep方法一定要try
try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } 不同于C#,JAVA里的Thre ...
- paip兼容windows与linux的java类根目录路径的方法
paip兼容windows与linux的java类根目录路径的方法 1.只有 pathx.class.getResource("")或者pathx.class.getResourc ...
随机推荐
- openssl之EVP系列之5---EVP_Encrypt系列函数具体解释(二)
openssl之EVP系列之5---EVP_Encrypt系列函数详细解释(二) ---依据openssl doc/crypto/EVP_EncryptInit.pod和doc/ssleay.t ...
- Android应用公布后的统计——百度移动统计的应用
一个App公布到各个渠道之后,我们须要採集不同渠道的一些信息,比方app在执行过程中产生的一些异常信息,app在各个android版本号的分布,以及各个app版本号的分布,各渠道的用户数,用户忠诚度等 ...
- 版本号控制-搭建gitserver
GitHub是一个免费托管开源码的Gitserver,假设我们不想公开项目的源码,又不想付费使用.那么我们能够自己搭建一台Gitserver. 以下我们就看看,怎样在Ubuntu上搭建Gitserve ...
- php 内置的 html 格式化/美化tidy函数 -- 让你的HTML更美观
php 内置的 html 格式化/美化tidy函数 https://github.com/htacg/tidy-html5 # HTML 格式化 function beautify_html($htm ...
- Onvif开发之代码框架生成篇
看了前一篇的ONVIF的简单介绍应该对它的基本使用都有了一些基本的了解了吧!下面我讲一步分解向大家介绍下如何通过gsoap生成需要的代码,以及代码中需要注意的问题[基于Linux平台 C开发] 生成O ...
- 3.常用Bracket插件
转自:https://blog.csdn.net/iso_wsy/article/details/52608205 1.Emmet 如果你从事Web前端开发的话,对该插件一定不会陌生.它可以加快你的 ...
- linux操作指令:
系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 - (SMBIOS ...
- echo---打印变量或输出字符串
cho命令用于在shell中打印shell变量的值,或者直接输出指定的字符串.linux的echo命令,在shell编程中极为常用, 在终端下打印变量value的时候也是常常用到的,因此有必要了解下e ...
- 微信小程序从零开始开发步骤(四)自定义分享的功能
上一章节,实现了小程序的底部导航的功能,这一节开始实现一些简单的功能.本章节介绍的是小程序的自定义分享的功能. 可以分享小程序的任何一个页面给好友或群聊.注意是分享给好友或群聊,并没有分享到朋友圈.一 ...
- SpringCloud组件和概念介绍
一:什么是微服务(Microservice) 微服务英文名称Microservice,Microservice架构模式就是将整个Web应用组织为一系列小的Web服务.这些小的Web服务可以独立地编译及 ...