import java.math.BigDecimal; import java.math.RoundingMode; /* BigDecimal类: 解决小数运算中, 精度不准确的问题 BigDecimal创建对象: public BigDecimal(double val) : 不推荐, 无法保证小数运算的准确性 public BigDecimal(String val) public static BigDecimal valueOf(double val) BigDecimal常用成员方法: public BigDecimal add(BigDecimal b) : 加法 public BigDecimal subtract(BigDecimal b) : 减法 public BigDecimal multiply(BigDecimal b) : 乘法 public BigDecimal divide(BigDecimal b) : 除法 public BigDecimal divide(BigDecimal b, 精确位数, 舍入模式) : 除法 注意: 如果使用BigDecimal运算, 出现了除不尽的情况, 会出现异常 Bigdecimal类中的doubleValue方法: 将BigDecimal数据类型转换为double数据类型 */ public class BigDecimalDemo { public static void main(String[] args) { BigDecimal bd1 = new BigDecimal(0.1); BigDecimal bd2 = new BigDecimal(0.2); System.out.println(bd1.add(bd2)); //0.3000000000000000166533453693773481063544750213623046875 System.out.println("----------------------------------------------------------"); BigDecimal bd3 = BigDecimal.valueOf(0.1); BigDecimal bd4 = BigDecimal.valueOf(0.2); System.out.println(bd3.add(bd4)); //0.3 System.out.println(bd3.subtract(bd4)); //-0.1 System.out.println(bd3.multiply(bd4)); //0.02 System.out.println(bd3.divide(bd4)); //0.5 System.out.println("----------------------------------------------------------"); BigDecimal bd5 = BigDecimal.valueOf(10.0); BigDecimal bd6 = BigDecimal.valueOf(3.0); System.out.println(bd5.divide(bd6, 2, RoundingMode.HALF_UP)); System.out.println("----------------------------------------------------------"); BigDecimal result = bd5.divide(bd6, 2, RoundingMode.HALF_UP); var v = result.doubleValue(); //将BigDecimal数据类型转换为Double类型 System.out.println(result); //类型转换后, 便于计算 } } 输出如下: 0.3000000000000000166533453693773481063544750213623046875 ---------------------------------------------------------- 0.3 -0.1 0.02 0.5 ---------------------------------------------------------- 3.33 ---------------------------------------------------------- 3.33 Process finished with exit code 0
BigDecimal类: 解决小数运算中, 精度不准确的问题
最新推荐文章于 2024-09-02 22:33:56 发布