Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ```java
- /**
- * BigDecimal:大十进制
- * double和float的设计目标是科学计算和工程计算,执行的是二进制浮点运算,提供的是一种精确的快速近似计算,但没有提供完全的精确结果。
- * 所有不应该被应用于要求精确结果的场合,商业场合往往要求精确结果,因此BigDecimal应运而生。
- * 例如:
- * System.out.println(1.2 + 0.2);//2.5238095238095237
- * System.out.println(2.1 - 0.3);//0.30000000000000004
- * System.out.println(2.2 * 3.4);//2.29999999999999982236431605997495353221893310546875
- * System.out.println(5.3 / 2.1);//25.4621
- * 浮点数是用二进制精确表示,CPU中浮点数是由两部分组成,指数和尾数,这样会参数误差,
- * 例如2.4的二进制表示方法是2.39999999999999999999999999999999
- * 商业计算中一般使用java.math.BigDecimal进行精确计算
- * new BigDecimal(double val);
- * new BigDecimal(int val);
- * new BigDecima(String val);
- * JDK描述double的构造方法有一定不可预知性,推荐使用String参数的构造方法
- * BigDecimal提供加/减/乘/除方法
- * add(),subtract(),multiply(),divide()
- * 保留小数点后两位,四舍五入
- * BigDecimal bd = new BigDecimal("2.369);
- * BigDecimal bd1 = bd.setScale(2,RoundingModel,ROUND_HALF_UP);
- * 注意BigDecimal是Immutable不可变的,所以每次运算会参数一个新的对象
- * 总结:
- * 1:商业计算使用BigDecimal
- * 2: 尽量使用String参数的构造函数
- * 3:BigDecimal是不可变的,每次运算都会产生一个新的对象
- */
- ```
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement