SHARE
TWEET

Untitled

a guest Mar 26th, 2019 66 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ```java
  2. /**
  3.  * BigDecimal:大十进制
  4.  * double和float的设计目标是科学计算和工程计算,执行的是二进制浮点运算,提供的是一种精确的快速近似计算,但没有提供完全的精确结果。
  5.  * 所有不应该被应用于要求精确结果的场合,商业场合往往要求精确结果,因此BigDecimal应运而生。
  6.  * 例如:
  7.  *         System.out.println(1.2 + 0.2);//2.5238095238095237
  8.  *         System.out.println(2.1 - 0.3);//0.30000000000000004
  9.  *         System.out.println(2.2 * 3.4);//2.29999999999999982236431605997495353221893310546875
  10.  *         System.out.println(5.3 / 2.1);//25.4621
  11.  * 浮点数是用二进制精确表示,CPU中浮点数是由两部分组成,指数和尾数,这样会参数误差,
  12.  * 例如2.4的二进制表示方法是2.39999999999999999999999999999999
  13.  * 商业计算中一般使用java.math.BigDecimal进行精确计算
  14.  * new BigDecimal(double val);
  15.  * new BigDecimal(int val);
  16.  * new BigDecima(String val);
  17.  * JDK描述double的构造方法有一定不可预知性,推荐使用String参数的构造方法
  18.  * BigDecimal提供加/减/乘/除方法
  19.  * add(),subtract(),multiply(),divide()
  20.  * 保留小数点后两位,四舍五入
  21.  * BigDecimal bd = new BigDecimal("2.369);
  22.  * BigDecimal bd1 = bd.setScale(2,RoundingModel,ROUND_HALF_UP);
  23.  * 注意BigDecimal是Immutable不可变的,所以每次运算会参数一个新的对象
  24.  * 总结:
  25.  *      1:商业计算使用BigDecimal
  26.  *      2: 尽量使用String参数的构造函数
  27.  *      3:BigDecimal是不可变的,每次运算都会产生一个新的对象
  28.  */
  29. ```
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Not a member of Pastebin yet?
Sign Up, it unlocks many cool features!
 
Top