Advertisement
Guest User

Untitled

a guest
Mar 26th, 2019
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.58 KB | None | 0 0
  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. ```
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement