在牵涉到金额的计算时,为了保持高精度的准确性,使用bigDecimal类型.

在使用BigDecimal类来进行计算的时候,主要分为以下步骤:

1、用float或者double变量构建BigDecimal对象。

2、通过调用BigDecimal的加,减,乘,除等相应的方法进行算术运算。

3、把BigDecimal对象转换成float,double,int等类型。

一般来说,可以使用BigDecimal的构造方法或者静态方法的valueOf()方法把基本类型的变量构建成BigDecimal对象。

1 BigDecimal b1 = new BigDecimal(Double.toString(0.48));

2 BigDecimal b2 = BigDecimal.valueOf(0.48);

对于常用的加,减,乘,除,BigDecimal类提供了相应的成员方法。

1 public BigDecimal add(BigDecimal value); //加法

2 public BigDecimal subtract(BigDecimal value); //减法

3 public BigDecimal multiply(BigDecimal value); //乘法

4 public BigDecimal divide(BigDecimal value); //除法

进行相应的计算后,我们可能需要将BigDecimal对象转换成相应的基本数据类型的变量,可以使用floatValue(),doubleValue()等方法。

下面是一个工具类,该工具类提供加,减,乘,除运算。

1 public class Arith {

2 /**

3 * 提供精确加法计算的add方法

4 * @param value1 被加数

5 * @param value2 加数

6 * @return 两个参数的和

7 */

8 public static double add(double value1,double value2){

9 BigDecimal b1 = new BigDecimal(Double.valueOf(value1));

10 BigDecimal b2 = new BigDecimal(Double.valueOf(value2));

11 return b1.add(b2).doubleValue();

12 }

13

14 /**

15 * 提供精确减法运算的sub方法

16 * @param value1 被减数

17 * @param value2 减数

18 * @return 两个参数的差

19 */

20 public static double sub(double value1,double value2){

21 BigDecimal b1 = new BigDecimal(Double.valueOf(value1));

22 BigDecimal b2 = new BigDecimal(Double.valueOf(value2));

23 return b1.subtract(b2).doubleValue();

24 }

25

26 /**

27 * 提供精确乘法运算的mul方法

28 * @param value1 被乘数

29 * @param value2 乘数

30 * @return 两个参数的积

31 */

32 public static double mul(double value1,double value2){

33 BigDecimal b1 = new BigDecimal(Double.valueOf(value1));

34 BigDecimal b2 = new BigDecimal(Double.valueOf(value2));

35 return b1.multiply(b2).doubleValue();

36 }

37

38 /**

39 * 提供精确的除法运算方法div

40 * @param value1 被除数

41 * @param value2 除数

42 * @param scale 精确范围

43 * @return 两个参数的商

44 * @throws IllegalAccessException

45 */

46 public static double div(double value1,double value2,int scale) throws IllegalAccessException{

47 //如果精确范围小于0,抛出异常信息

48 if(scale<0){

49 throw new IllegalAccessException("精确度不能小于0");

50 }

51 BigDecimal b1 = new BigDecimal(Double.valueOf(value1));

52 BigDecimal b2 = new BigDecimal(Double.valueOf(value2));

53 return b1.divide(b2, scale).doubleValue();

54 }

55 }

java 金额计算_java中金额计算相关推荐

  1. java 金钱计算_Java中涉及到金钱计算方法的两种方式

    一.不直接使用float和double计算金钱的原因 java中涉及到浮点计算,就会有误差, float和double只能用来做科学计算或者是工程计算,在商业计算中我们要用 java.math.Big ...

  2. math java 计算_Java中的数学计算函数汇总

    Math类:  java.lang.Math类中包含基本的数字操作,如指数.对数.平方根和三角函数. java.math是一个包,提供用于执行任意精度整数(BigInteger)算法和任意精度小数(B ...

  3. java double 计算_Java中的Double类型计算

    一.问题的提出: 如果我们编译运行下面这个程序会看到什么? public class Test{ public static void main(String args[]){ System.out. ...

  4. java mod %区别_Java中 % 与Math.floorMod() 区别详解

    %为取余(rem),Math.floorMod()为取模(mod) 取余取模有什么区别呢? 对于整型数a,b来说,取模运算或者取余运算的方法都是: 1.求 整数商: c = a/b; 2.计算模或者余 ...

  5. java bigdecimal赋值_Java中BigDecimal类介绍及用法(亲测)

    Java中提供了大数字(超过16位有效位)的操作类,即 java.math.BinInteger 类和 java.math.BigDecimal 类,用于高精度计算. 其中 BigInteger 类是 ...

  6. java math 函数_Java中Math类常用函数总结

    Java中比较常用的几个数学公式的总结: //取整,返回小于目标函数的最大整数,如下将会返回-2 Math.floor(-1.8): //取整,返回发育目标数的最小整数 Math.ceil() //四 ...

  7. java 内部变量_java 中的内置数据类型

    1,  基本数据类型 Java是强类型语言, 对于每一种数据都定义了类型,基本数据类型分为数值型,字符型,布尔型.数值型又分为了整型和浮点型. 整型又分为byte, int, short long. ...

  8. java 序列化实例_Java中的序列化与反序列化实例

    创建的字节流与平台无关.因此,在一个平台上序列化的对象可以在另一个平台上反序列化. 为了使Java对象可序列化,我们实现java.io.Serializable可序列化接口. ObjectOutput ...

  9. java divide 用法_java中BigDecimal加减乘除基本用法

    Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算.双精度浮点型变量double可以处理16位有效数. 在实际应用中,需要对更大或者更小的数进 ...

最新文章

  1. 软件开发和产品经理到底是怎么回事
  2. 用archoctopus下载花瓣
  3. 比较两种php调用Java对象的方法
  4. javascript 位运算符
  5. php 禁止浏览器直接访问网页_PHP禁止直接从浏览器输入地址访问PHP文件
  6. 自定义列_如何对Pandas DataFrame进行自定义排序
  7. java创建一个不可变对象_如何在Java中创建不可变类?
  8. SaltStack 拉取和推送文件
  9. 面试问题——fread和read的区别
  10. DC、HDC和CDC的区别及MFC常见类的作用
  11. 阿里HSF(服务框架)
  12. Hashtable如何保证线程安全
  13. 移动端安卓vin码/车架号识别
  14. js html监听ctrl v,js监听组合按键
  15. 多边形(n边形)面积计算公式hdu2036
  16. 输入你的密码来连接到_查看电脑已连接的WIFI密码
  17. java获取GET和POST请求参数
  18. 移动端手机调试的方法
  19. Java 实现sha_Java实现SHA算法的方法详解
  20. 非线性方程线性化求参数的简单例子

热门文章

  1. 来自水库论坛欧成效2014年的总结
  2. 计算机网络Wireshark实验(西安交通大学)
  3. CPU卡COS系统文件结构详解
  4. 开源AI迷你版apache
  5. WordPress登录注册系统的优化
  6. 读书百客:《渔家傲·天接云涛连晓雾》鉴赏
  7. OCP考试如何确定考试中心
  8. 苹果11是高通基带吗_iPhone11信号成最大问题,不支持5G还是英特尔基带,令人失望...
  9. HTML5期末大作业:服装商城网站设计——2021凡客服装商城(1页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web前端设计与开发期末作品/期末大作业
  10. Unity检视面板重构(OnInspectorGUI重写)