Java 使用 BigDecimal 精确小数运算(解决浮点数误差)

// 导入java.math包下的BigDecimal类,用于高精度小数计算
import java.math.BigDecimal;

// 定义公共类,类名必须和文件名一致:CalculateDemo.java
public class CalculateDemo {
    // main方法,程序入口,固定写法,程序从这里开始执行
    public static void main(String[] args) {
        // new BigDecimal("字符串形式数字"),用字符串构造避免double本身的精度丢失
        BigDecimal num1 = new BigDecimal("0.000002");
        BigDecimal num2 = new BigDecimal("0.000006");

        // 调用add()方法,执行加法运算,BigDecimal不可变,运算返回新对象
        BigDecimal result = num1.add(num2);

        // 输出计算结果
        System.out.println("0.000002 + 0.000006 = " + result);
        // equals比较两个BigDecimal数值是否完全相等
        System.out.println("结果是否等于0.000008:" + result.equals(new BigDecimal("0.000008")));
    }
}

逐行详细解释

  1. import java.math.BigDecimal;

import:导入关键字。java.math 是包名,BigDecimal 是高精度数字类。Java 默认不会加载这个类,需要手动导入,否则无法使用。

  1. public class CalculateDemo {
    public:访问修饰符,表示公开;class:定义类;CalculateDemo是类名。Java 一个.java文件只能有一个 public 类,文件名必须和类名完全相同,大小写也要一致。{}是代码块,包裹类内部所有内容。

  2. public static void main(String[] args) {
    public:公开;static:静态,不需要创建对象就能运行;void:方法无返回值;main:程序入口方法名称,固定;String[] args:接收命令行传入参数。所有 Java 应用都从 main 方法开始执行,{}包裹方法内代码。

  3. BigDecimal num1 = new BigDecimal("0.000002");
    BigDecimal:变量类型;num1:变量名。new BigDecimal("文本") 创建高精度数字对象。必须传字符串,如果传入 double,double 本身已经带精度误差,就失去意义。

  4. BigDecimal num2 = new BigDecimal("0.000006");
    同上,创建第二个高精度小数对象。

  5. BigDecimal result = num1.add(num2);
    add () 是 BigDecimal 内置加法方法。注意:BigDecimal 对象一旦创建,数值不能修改。加法不会改变 num1、num2,计算结果会生成全新 BigDecimal 对象,赋值给 result。
    减法:subtract (),乘法:multiply (),除法:divide ()

  6. System.out.println("0.000002 + 0.000006 = " + result);
    System.out:标准输出对象;println:打印并自动换行。+在这里是字符串拼接,把文字和 result 的值拼成一整条字符串输出。

  7. System.out.println("结果是否等于0.000008:" + result.equals(new BigDecimal("0.000008")));
    equals ():BigDecimal 的相等判断方法,比较数值;不能用==,==判断是否为同一个内存对象,不是比较数值。

  8. 两个}
    分别闭合 main 方法、闭合类

posted @ 2026-10-04 13:57  刘秋实  阅读(10)  评论(0)    收藏  举报