05_BigDecimal类
一、前言
public class demo01 {
public static void main(String[] args) {
double d1 = 1.0;
double d2 = 0.9;
System.out.println(d1 - d2);
}
}
上述代码的结果为0.09999999999999998,出现这个结果是因为在java中"double"类型是浮点数,由于浮点数在计算机中的表示方法限制,某些十进制的小数在二进制中不能精确表示,因此会出现误差。例如,0.1或0.9,在二进制中需要无限的位数才能精确表示,但存储空间是有限的,因此会被截断,导致精度丢失。
因此需要精确小数运算的情况下,可以使用BigDecimal类。
二、BigDecimal类
"BigDecimal"类提供了对十进制浮点数的精确控制,但需要注意使用字符串或整数进行初始化,以避免浮点数的精度问题。
如下声明的bd1和bd2:
import java.math.BigDecimal;
public class demo01 {
public static void main(String[] args) {
BigDecimal bd1 = new BigDecimal("1.0");
BigDecimal bd2 = new BigDecimal("0.9");
}
}
BigDecimal类的对象实现加减乘除运算:
import java.math.BigDecimal;
public class demo01 {
public static void main(String[] args) {
BigDecimal bd1 = new BigDecimal("1.0");
BigDecimal bd2 = new BigDecimal("0.9");
//减法:subtract()方法
BigDecimal subtract = bd1.subtract(bd2);
System.out.println(subtract);
//加法:add()方法
BigDecimal add = bd1.add(bd2);
System.out.println(add);
//乘法:multiply()方法
BigDecimal multiply = bd1.multiply(bd2);
System.out.println(multiply);
//除法:divide()方法
BigDecimal a = new BigDecimal("1.4");
BigDecimal b = new BigDecimal("0.5");
BigDecimal c = new BigDecimal("0.9");
BigDecimal result = a.subtract(b).divide(c);
System.out.println(result);
//20除以3,保留小数点后两位,采用BigDecimal.ROUND_HALF_UP(四舍五入)
BigDecimal r = new BigDecimal("20").divide(new BigDecimal("3"), 2, BigDecimal.ROUND_HALF_UP);
System.out.println(r);
}
}
合集:
Java常用类
分类:
Java / Java常用类
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能