BigDecimal
因为double类型所定义的浮点数并不是精确的,比如在定义一个double类型a=1.0,b=0.9,a-b的结果并不会等于0.1而是0.9999999998
所以在进行浮点数的精确计算时,就不能用double或者float,而是BigDecimal
public class Demo04 { public static void main(String[] args) { double a = 1.0; double b = 0.9; System.out.println(a-b);//结果为0.099999999999998 //BigDecimal,大的浮点数精确计算 BigDecimal b1 = new BigDecimal("1.0"); BigDecimal b2 = new BigDecimal("0.9"); //减法 BigDecimal r1 = b1.subtract(b2); System.out.println(r1); //0.1 //加法 BigDecimal r2 = b1.add(b2); System.out.println(r2); //1.9 //乘法 BigDecimal r3 = b1.multiply(b2); System.out.println(r3); //0.98 //除法,执行除法运算时,除不尽会报错 BigDecimal r4 = new BigDecimal("1.4") .subtract(new BigDecimal("0.5")) .divide(new BigDecimal("0.9")); System.out.println(r4); //1 //除不尽时 保留两位小数 四舍五入 BigDecimal r5 = new BigDecimal("10").divide(new BigDecimal("3"),2,BigDecimal.ROUND_HALF_UP); System.out.println(r5); //3.33 } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异