BigDecimal用法总结

BigDecimal常用于金额的计算,下面总结下这次项目中BigDecimal的用法。

1.加减乘除

2.设置精度

3.取反

加减乘除分别调用函数

[java] view plain copy

  1. public BigDecimal add(BigDecimal value);
  2. public BigDecimal subtract(BigDecimal value);
  3. public BigDecimal multiply(BigDecimal value);
  4. public BigDecimal divide(BigDecimal value);

举例:

[java] view plain copy

  1. BigDecimal a=new BigDecimal(10.0);
  2. BigDecimal b=new BigDecimal(9.1);
  3. System.out.println(a.subtract(b));

精度设置,为什么会设置精度,给大家看个效果

代码如下:

[java] view plain copy

  1. BigDecimal abig=new BigDecimal(10.0);
  2. BigDecimal bbig=new BigDecimal(9.1);
  3. BigDecimal cbig=new BigDecimal(8.9);
  4. System.out.println(abig.subtract(bbig));
  5. System.out.println(abig.subtract(cbig));

结果如下:

[java] view plain copy

  1. 0.9000000000000003552713678800500929355621337890625
  2. 1.0999999999999996447286321199499070644378662109375

并不是我们希望看到的0.9和1.1,原因就是转成二进制的时候会有精度问题,导致这样的结果。所以我们可以在运算的时候加精度,也可以在实例化BigDecimal的时候用字符串。

设置精度的方法:

[java] view plain copy

  1. System.out.println(abig.subtract(bbig).setScale(2, BigDecimal.ROUND_HALF_UP));
  2. System.out.println(abig.subtract(cbig).setScale(2, BigDecimal.ROUND_HALF_UP));

这样设置两位精度就可以啦

[java] view plain copy

  1. 0.90
  2. 1.10

字符串实例化的方法:

[java] view plain copy

  1. BigDecimal abig=new BigDecimal("10.0");
  2. BigDecimal bbig=new BigDecimal("9.1");
  3. BigDecimal cbig=new BigDecimal("8.9");

取反

因为Bigdecimal是无法直接用+-*/这些符号进行计算的,所以取反的时候也需要一个单独的方法来实现:

[java] view plain copy

  1. System.out.println(abig.negate());

这样就会拿到它的相反数了:

[java] view plain copy

  1. -10.0

这些是这次项目中用到的点

BigDecimal用法总结的更多相关文章

  1. BigDecimal用法详解(转)

    BigDecimal用法详解    http://www.cnblogs.com/linjiqin/p/3413894.html 一.简介Java在java.math包中提供的API类BigDecim ...

  2. BigDecimal 用法详解

    BigDecimal简介 BigDecimal用法: BigDecimal的构造方法 BigDecimal常用方法描述 BigDecimal比较 BigDecimal总结 BigDecimal简介 J ...

  3. Bigdecimal用法

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

  4. BigDecimal用法详解

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

  5. 学习BigDecimal用法

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

  6. JAVA BigDecimal 用法

    一.BigDecimal 的加减乘除 BigDecimal bignum1 = new BigDecimal("10"); BigDecimal bignum2 = new Big ...

  7. BigDecimal 用法总结

    转载请注明出处: 目录 1.BigDecimal 简介 2.构造BigDecimal的对象 3.常用方法总结 4.divide方法使用 5.setScale 方法使用 6.BigDecimal 数据库 ...

  8. BigDecimal简单说

    1) 浮点数的舍弃规则: 假设小数点后保留两位 RoundingMode.CEILING:向正无穷大的方向舍入:  1.245 → 1.25   -1.245 → -1.24 RoundingMode ...

  9. Java基础知识【下】( 转载)

    http://blog.csdn.net/silentbalanceyh/article/details/4608360 (最终还是决定重新写一份Java基础相关的内容,原来因为在写这一个章节的时候没 ...

随机推荐

  1. ssh登录原理及免密登录方法

    免密登录设置 1.进入到我的home目录  cd ~/.ssh 2.生成ssh免登陆秘钥ssh-keygen -t rsa (四个回车)      执行完这个命令后,会生成两个文件id_rsa(私钥) ...

  2. (翻译).NET应用架构

    .NET应用架构 Kalyan Bandarupalli著,hystar翻译 这个系列文章将帮助.NET开发人员与架构师使用最新的.NET技术设计高效的.NET应用.关于应用架构这方面虽然已有很多文章 ...

  3. python 常用的模块

    面试的过程中经常被问到使用过那些python模块,然后我大脑就出现了一片空白各种模块一顿说,其实一点顺序也没有然后给面试官造成的印象就是自己是否真实的用到这些模块,所以总结下自己实际工作中常用的模块: ...

  4. 平均数_中位数_众数在SqlServer实现

    平均数.中位数.众数都是度量一组数据集中趋势的统计量.所谓集中趋势是指一组数据向某一中心值靠拢的倾向,测度集中趋势就是寻找数据一般水平的代表值或中心值.而这三个特征数又各有特点,能够从不同的角度提供信 ...

  5. Delphi在调WebService的时候加Soap头验证

    procedure   ws: WebServiceSoap;   H: XXXHeader; begin   ws := GetWebServiceSoap;   H := XXXHeader.Cr ...

  6. linux中telnet后退出连接窗口的方法?

    linux中telnet后退出连接窗口 [root@a cron]# telnet www.baidu.com 80Trying 115.239.211.112...Connected to www. ...

  7. Schtasks命令详解(计划任务DOS批处理)

    Schtasks 安排命令和程序定期运行或在指定时间内运行.从计划表中添加和删除任务,按需要启动和停止任务,显示和更改计划任务. 创建新的计划任务. 语法 schtasks/create/tnTask ...

  8. MySQL 之 MHA + ProxySQL + keepalived 实现读写分离,高可用(一)

    准备服务器: docker network create --subnet=192.168.0.0/16 staticnetdocker run -d --privileged -v `pwd`/my ...

  9. 03-封装Response响应

    package com.day5; import java.io.BufferedWriter; import java.io.IOException; import java.io.OutputSt ...

  10. 十六进制颜色值和rgb颜色值互相转换

    在之前的一篇文章<将16进制的颜色转为rgb颜色>中,曾经写过将16进制的颜色转换为rgb颜色. 当然了,今天再看,还是有很多可以优化的地方,所以对之前的代码重构了一遍,并且同时写了一个反 ...