文章目录
- BigDecimal
- 代码
BigDecimal
解决小数运算失真问题
解决方法:转换为BigDecimal对象
代码
package com.zhang.math;import java.math.BigDecimal;/*** @Author: ggdpzhk* @CreateTime: 2024-08-25*/
public class BigDecimalTest {public static void main(String[] args) {double a = 0.1;double b = 0.2;System.out.println(a + b);System.out.println("------------------------------");//1. 把小数转换为字符串 在把字符串包装为BigDecimal对象然后进行加减乘除的运算BigDecimal a1 = BigDecimal.valueOf(a);BigDecimal b1 = BigDecimal.valueOf(b);System.out.println(a1.add(b1));System.out.println(a1.subtract(b1));System.out.println(a1.multiply(b1));System.out.println(a1.divide(b1));//会遇到除法除不尽的情况double m = 0.3;double n = 0.1;//BigDecimal m1 = new BigDecimal(m);// 禁止使用构造方法BigDecimal(double)的方法把double类型转换成BigDecimal对象,存在精度损失风险。比如支付时钱财问题,在精确计算或值比较的场景中可能会导致业务逻辑异常//BigDecimal m1 = BigDecimal.valueOf(m);BigDecimal n1 = BigDecimal.valueOf(n);BigDecimal rs = n1.divide(m1,3,BigDecimal.ROUND_HALF_UP);//四舍五入//更多人 更基础的运算还是转换成double类型,所以我们运算完以后转换为double类型然后输出double rs1 = rs.doubleValue();System.out.println(rs1);}
}