BigDecimal用法总结

原创 2016年05月31日 18:19:11

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

1.加减乘除

2.设置精度

3.取反

加减乘除分别调用函数

        public BigDecimal add(BigDecimal value);
        public BigDecimal subtract(BigDecimal value);
        public BigDecimal multiply(BigDecimal value);
        public BigDecimal divide(BigDecimal value);

举例:

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

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

代码如下:

        BigDecimal abig=new BigDecimal(10.0);
        BigDecimal bbig=new BigDecimal(9.1);
        BigDecimal cbig=new BigDecimal(8.9);

        System.out.println(abig.subtract(bbig));
        System.out.println(abig.subtract(cbig));

结果如下:

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

设置精度的方法:

        System.out.println(abig.subtract(bbig).setScale(2, BigDecimal.ROUND_HALF_UP));
        System.out.println(abig.subtract(cbig).setScale(2, BigDecimal.ROUND_HALF_UP));
这样设置两位精度就可以啦

0.90
1.10
字符串实例化的方法:

        BigDecimal abig=new BigDecimal("10.0");
        BigDecimal bbig=new BigDecimal("9.1");
        BigDecimal cbig=new BigDecimal("8.9");


取反

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

        System.out.println(abig.negate());
这样就会拿到它的相反数了:

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





版权声明:本文为博主原创文章,未经博主允许不得转载。

java BigDecimal实现精确加减乘除运算

java.math.BigDecimal.BigDecimal一共有4个够造方法,让我先来看看其中的两种用法: 第一种:BigDecimal(double val) 将double转换为BigDec...
  • shadow_zed
  • shadow_zed
  • 2017年06月20日 22:48
  • 9223

Java 使用BigDecimal类处理高精度计算

Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数,但在实际应用中,可能需要对更大或者更小的...
  • qq_20785431
  • qq_20785431
  • 2016年08月25日 17:26
  • 11191

Java BigDecimal详解

1.引言         借用《Effactive Java》这本书中的话,float和double类型的主要设计目标是为了科学计算和工程计算。他们执行二进制浮点运算,这是为了在广域数值范围上提供较为...
  • jackiehff
  • jackiehff
  • 2013年02月16日 14:34
  • 165204

浅谈BigDecimal

看图 如图 读过effective java的都知道,其中第49条就是:如果需要精确的答案,请避免使用float和double 所以在涉及到货币计算的时候一般使用BigDecimal 分析 ...
  • j754379117
  • j754379117
  • 2016年08月18日 10:35
  • 2716

BigDecimal加减乘除运算

java.math.BigDecimal。BigDecimal一共有4个够造方法,让我先来看看其中的两种用法: 第一种:BigDecimal(double val) Translates a do...
  • huiwenjie168
  • huiwenjie168
  • 2011年11月21日 21:22
  • 258248

MYSQL数据库 的 decimal 字段类型 和 Java 的BigDecimal

mysql中的decimal , 在java中的用BigDecimal表示的
  • diyu122222
  • diyu122222
  • 2017年08月08日 10:53
  • 3086

关于BigDecimal的使用

关于BigDecimal的使用
  • u011526599
  • u011526599
  • 2016年10月26日 00:09
  • 1152

金融项目java开发_BigDecimal(解决计算精度问题)

当使用double进行商业运算时,double计算会丢失精度。可以使用BigDecimal进行计算。 import java.math.BigDecimal; import org.junit.Te...
  • feicongcong
  • feicongcong
  • 2017年01月08日 13:27
  • 1873

BigDecimal类的简单用法

一提到Java里面的商业计算,我们都知道不能用float和double,因为他们无法进行精确计算。但是Java的设计者给编程人员提供了一个很有用的类BigDecimal,他可以完善float和doub...
  • justinavril
  • justinavril
  • 2008年08月24日 12:50
  • 41314

BigDecimal的简单使用

朋友给我发来这样一段代码,问我运算结果double i = 1.091; double j = 1.009; System.out.println(i + j); 我一看这类型:double,结果是2...
  • qq_21856521
  • qq_21856521
  • 2017年05月21日 17:16
  • 696
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:BigDecimal用法总结
举报原因:
原因补充:

(最多只允许输入30个字)