java.math.BigDecimal类
BigDecimal类用于高精度计算。一般的float型和Double型数据只可以用来做科学计算或者是工程计算,由于在商业计算中,要求的数字精度比较高,所以要用到java.math.BigDecimal类,它支持任何精度的定点数,可以用它来精确计算货币值。
有几点值得注意一下,
1、BigDecimal所创建的是对象,我们不能使用传统的+、-、*、/等算术运算符直接对其对象进行数学运算,而必须调用其相对应的方法。
2、方法中的参数也必须是BigDecimal的对象。
如:two.add(2)就是一种错误的操作,因为2没有变为BigInteger型。要写为BigInteger two=new BigInteger("2");
1、BigDecimal.divide(BigDecimal divisor, int scale, RoundingMode roundingMode);
/**
* 两个BigDecimal相除
* 返回一个BigDecimal,精确位数为scale指定值,舍入方式为roundingMode
* ROUND_HALF_UP:向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,向上舍入, 1.55保留一位小数结果为1.6(四舍五入)
*/
eg:
BigDecimal bd1 = new BigDecimal(Double.toString(v1));
BigDecimal bd2 = new BigDecimal(Double.toString(v2));
double pricediscount=bd1.divide(bd2, 2, BigDecimal.ROUND_HALF_UP).doubleValue();
* 两个BigDecimal相加
* 返回一个BigDecimal,舍入方式为mc
*/
eg:
BigDecimal bd1 = new BigDecimal(Double.toString(v1));
BigDecimal bd2 = new BigDecimal(Double.toString(v2));
double pricediscount=bd1.add(bd2).doubleValue().doubleValue();
其他方法参照
| 参数类型为 MathContext 的 java.math 中的方法 | |
|---|---|
BigDecimal |
BigDecimal.abs(MathContext mc) 返回其值为此 BigDecimal 绝对值的 BigDecimal(根据上下文设置进行舍入)。 |
BigDecimal |
BigDecimal.add(BigDecimal augend, MathContext mc) 返回其值为 (this + augend) 的 BigDecimal(根据上下文设置进行舍入)。 |
BigDecimal |
BigDecimal.divide(BigDecimal divisor, MathContext mc) 返回其值为 (this / divisor) 的 BigDecimal(根据上下文设置进行舍入)。 |
BigDecimal |
BigDecimal.divideAndRemainder(BigDecimal divisor, MathContext mc) 返回由两个元素组成的 BigDecimal 数组,该数组包含 divideToIntegralValue 的结果,后跟根据上下文设置对两个操作数进行舍入计算所得到的 remainder 的结果。 |
BigDecimal |
BigDecimal.divideToIntegralValue(BigDecimal divisor, MathContext mc) 返回 BigDecimal,其值为 (this / divisor) 的整数部分。 |
BigDecimal |
BigDecimal.multiply(BigDecimal multiplicand, MathContext mc) 返回其值为 (this × multiplicand) 的 BigDecimal(根据上下文设置进行舍入)。 |
BigDecimal |
BigDecimal.negate(MathContext mc) 返回其值为 (-this) 的 BigDecimal(根据上下文设置进行舍入)。 |
BigDecimal |
BigDecimal.plus(MathContext mc) 返回其值为 (+this) 的 BigDecimal(根据上下文设置进行舍入)。 |
BigDecimal |
BigDecimal.pow(int n, MathContext mc) 返回其值为 (thisn) 的 BigDecimal。 |
BigDecimal |
|
BigDecimal |
返回根据 MathContext 设置进行舍入后的 BigDecimal。 |
BigDecimal |
返回其值为 (this - subtrahend) 的 BigDecimal(根据上下文设置进行舍入)。 |
java.math.BigDecimal类的更多相关文章
- java.math.BigDecimal类multiply的使用
java.math.BigInteger.multiply(BigInteger val) 返回一个BigInteger,其值是 (this * val).声明 以下是java.math.BigInt ...
- Java中BigDecimal类介绍及用法
Java中提供了大数字(超过16位有效位)的操作类,即 java.math.BinInteger 类和 java.math.BigDecimal 类,用于高精度计算. 其中 BigInteger 类是 ...
- Java 使用BigDecimal类处理高精度计算
Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算.双精度浮点型变量double可以处理16位有效数,但在实际应用中,可能需要对更大或者更小的 ...
- java基础-BigDecimal类常用方法介绍
java基础-BigDecimal类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.BigDecimal类概述 我们知道浮点数的计算结果是未知的.原因是计算机二进制 ...
- java.math.BigDecimal
package day14; import java.math.BigDecimal; /** * Created by admin on 2018/11/24. * 看程序写结果:结果和我们想的有一 ...
- java.math.BigDecimal保留两位小数,保留小数,精确位数
http://blog.csdn.net/yuhua3272004/article/details/3075436 使用java.math.BigDecimal工具类实现 java保留两位小数问题 ...
- 商业计算中Java高精度计算BigDecimal类
<Effective Java> 第48条:如果需要精确的答案,请避免使用float和double. 如果我们编译运行下面这个程序会看到什么?public class Test{ p ...
- Java中BigDecimal类的常用方法
1.简介 BigDecimal类位于java.math.BigDecimal包下.使用此类可以完成大的小数操作,而且也可以使用此类进行精确的四舍五入,这一点在开发中经常使用. 对于不需要任何准确计算精 ...
- java.math.BigDecimal()的用法
Java中简单的浮点数类型float和double是不能进行运算的,不光Java,很多语言都是这样. 我们运行下面程序你将会看到 public class TestMathDecimal { publ ...
随机推荐
- 通过命令名称查询进程id
linux 中如何通过命令名称查询出进程的id呢? 例如,我想查询java的进程id: ps -ef |grep java |grep -v grep|awk '{print $2}' 或者: ps ...
- ACM_2057
/* 2013暑期多校联合训练 - 80 +高校,300 +队伍,10000元奖金,敬请期待? A + B再次 时间限制:1000/1000 MS(JAVA /其他)内存限制:32768分之32768 ...
- 公有云开启全面竞争时代——青云QingCloud
网界网本期[封面报道]公有云开启全面竞争时代 [CNW.com.cn 专稿] 险滩急流之后,公有云[注]服务市场的开拓者们终于看到了一片丰饶之海. 2013年,中国云计算[注]产业起步的第五年,公有云 ...
- kickstartInstalls
- python 3 操作 excel
看到一篇很好的python读写excel方式的对比文章: 用Python读写Excel文件 关于其他版本的excel,可以通过他提供的链接教程进行学习. XlsxWriter: https://git ...
- OpenCV 中 IplImage、CvMat、Mat中的type是怎么回事?
在使用opencv的过程中,无论使用原始的IplImage和CvMat类型,还是用最新C++版本的Mat类型,在创建和使用过程中,经常会遇到CV_8UC1.CV_8UC3.CV_32FC3等声明,我以 ...
- Traffic Lights - SGU 103(最短路)
题目大意:有一个城市的路线图,有N个交叉点,每两个交叉点之间只有一条路,现在想从交点u去交点v,不过这个路的交通比较特别,每个路都有一个交通灯,灯有两种颜色,蓝色和紫色,例如一条路线在交点s,t之间, ...
- php session already send by ……
初学者在处理登录注册的时候可能会遇到一个问题就是Warning: Cannot modify header information - headers already sent by .... 这是什 ...
- iOS开发中关于UIImage的知识点总结
UIImage是iOS中层级比较高的一个用来加载和绘制图像的一个类,更底层的类还有 CGImage,以及iOS5.0以后新增加的CIImage.今天我们主要聊一聊UIImage的三个属性: image ...
- iOS--RunLoop原理介绍
什么是RunLoop RunLoop从字面上看是运行循环的意思,这一点也不错,它确实就是一个循环的概念,或者准确的说是线程中的循环. 本文一开始就提到有些程序是一个圈,这个圈本质上就是这里的所谓的Ru ...