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 ...
随机推荐
- Linux cat命令详解
本文主要内容源自网络,参考资料如下: 华夏名网,linux cat命令详解,http://www.sudu.cn/info/html/edu/20070101/290711.html 命令格式:cat ...
- 关于将客户端移植到Lua的解决方案设想。
现在发行商都需要cp们做热更新,而对于unity制作的游戏来讲,这个恐怕是个噩梦,而项目已经进行到中后期,确实很麻烦,有UniLua,但是如果全部手动解决恐怕上不了线了工作量太大,初步设想如果做一个基 ...
- lightoj 1037 状态压缩
题目链接:http://lightoj.com/volume_showproblem.php?problem=1037 #include<cstdio> #include<cstri ...
- hdu 4620 搜索
好苦逼,为啥数组开小了,不会runtime error,还得我WA了几个小时,我泪流满面. 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4620 #i ...
- openStack云平台虚拟桌面galera mysql 3节点集群实例实战 调试完成
被复制节点: /usr/local/mysql/bin/mysqld_safe --wsrep_cluster_address=gcomm:// >/dev/null &复制节点01: ...
- Little Kings - SGU 223(状态压缩)
题目大意:在一个N*N的棋盘上放置M个国王,已知国王会攻击与它相邻的8个格子,要求放置的额国王不能相互攻击,求放置的方式有多少种. 分析:用dp[row][state][nOne],表示本行状态sta ...
- liststack——链表栈(procedure)
#include <stdio.h> #include <stdlib.h> #include <string.h> #include "list.h&q ...
- thymeleaf 和其它标签组合 获取数据
thymeleaf 有很多的内置标签, 但是我们在开发中会引入其它很多标签, 这个时候, 后台数据过来了,前端 页面要怎么显示呢? 网上资料真的很少. 不过还是找到了答案: th:attr 这个标签 ...
- js判断input输入框为空时遇到的问题 弹窗后,光标没有定位到输入框,而是直接执行我的处理页面程序
无论是会员注册还是提交订单,我们都要使用到form表单,此时我们在处理数据时,就要判断用户填写的信息.一次是直接通过js判断input输入框是否没有填信息,然后在后台处理文件中通过过滤字符串后再次判断 ...
- Activity透明/半透明效果的设置transparent(两种实现方法)
两种方法实现Activity透明/半透明效果的设置,代码思路很有调理,感兴趣的朋友可以参考下,希望本文可以帮助到你 方法一:res/values文件夹下建立styles.xml: 复制代码代码如下 ...