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. 在C#中如何判断线程当前所处的状态

    在C#中,线程对象Thread使用ThreadState属性指示线程状态,它是带Flags特性的枚举类型对象.   ThreadState 为线程定义了一组所有可能的执行状态.一旦线程被创建,它就至少 ...

  2. Centos7 下安装VMware tools

    1:先在虚拟机点击安装VMware Tools   2:然后挂载       mount /dev/cdrom /mnt 3:进入/mnt,可以看到有       4:拷贝VMwareTools到其他 ...

  3. 通过 JDK 自带的 javap 命令查看 SynchronizedDemo 类的相关字节码信息

    首先切换到类的对应目录执行 javac SynchronizedDemo.java 命令生成编译后的 .class 文件 然后执行 javap -c -s -v -l SynchronizedDemo ...

  4. 对象克隆(C# 快速高效率复制对象另一种方式 表达式树转)

    1.需求 在代码中经常会遇到需要把对象复制一遍,或者把属性名相同的值复制一遍. 比如: public class Student { public int Id { get; set; } publi ...

  5. PostgreSQL获取所有表名、字段名、字段类型、注释

    转载自:http://blog.csdn.net/cicon/article/details/51577655 获取表名及注释: select relname as tabname,cast(obj_ ...

  6. 当VUE 遇到微信js api

    先哭一会儿... history hash 1.如果使用history 方式,需要使用window.localtion.href="路径" 2.然后使用this.$router.p ...

  7. Spark 性能调优-内存设置-GC设置

    http://mt.sohu.com/20150604/n414449770.shtml http://my.oschina.net/mkh/blog/330386 http://itindex.ne ...

  8. springBoot 整合mybaits 逆向工程

    pom.xml文件中增加配置项 <build> <plugins> <plugin> <groupId>org.springframework.boot ...

  9. MII、GMII、RMII、SGMII、XGMII 接口区别

    MII即媒体独立接口,也叫介质无关接口.它是IEEE-802.3定义的以太网行业标准.它包括一个数据接口,以及一个MAC和PHY之间的管理接口(图1). 数据接口包括分别用于发送器和接收器的两条独立信 ...

  10. delphi combobox屏蔽鼠标滑动

    //第1种方法 procedure TForm1.FormMouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; Mo ...