关于#double#的问题,如何解决?

请实现一个银行账户类 BankAccount,该类包括以下方法:public BankAccount(String name, double balance):创建一个账户,初始余额为 balance ,账户持有人为 name 。
public synchronized double withdraw(double amount):从账户中取出指定金额 amount ,返回取款后的余额。如果取款金额大于余额,抛出异常。
public synchronized double deposit(double amount):向账户中存入指定金额 amount ,返回存款后的余额。
注意事项:
这些方法都需要用 synchronized 实现同步互斥资源的共享访问。取款时需要检查账户余额是否足够,不足时必须抛出异常。存款时不需要检查余额,只需要将金额加入账户余额即可。
创建测试实例,帐户余额100,多线程存入和取出的操作,打印出帐户余额。

 

public class BankAccount {
    private String name;
    private double balance;

    public BankAccount(String name, double balance) {
        this.name = name;
        this.balance = balance;
    }

    public synchronized double withdraw(double amount) {
        if (amount > balance) {
            throw new IllegalArgumentException("Insufficient balance");
        }
        balance -= amount;
        System.out.println("取钱: " + amount + ", 取完之后: " + balance);
        return balance;
    }

    public synchronized double deposit(double amount) {
        balance += amount;
        System.out.println("存钱: " + amount + ", 存完之后: " + balance);
        return balance;
    }

    public static void main(String[] args) {
        BankAccount account = new BankAccount("张三", 100);

        Thread depositThread = new Thread(() -> {
            for (int i = 0; i < 5; i++) {
                double amount = Math.random() * 100;
                account.deposit(amount);
            }
        });

        Thread withdrawThread = new Thread(() -> {
            for (int i = 0; i < 5; i++) {
                double amount = Math.random() * 100;
                try {
                    account.withdraw(amount);
                } catch (IllegalArgumentException e) {
                    System.out.println("余额不足" + e.getMessage());
                }
            }
        });

        depositThread.start();
        withdrawThread.start();

        try {
            depositThread.join();
            withdrawThread.join();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        System.out.println("Final balance: " + account.balance);
    }
}



package com;

public class BankAccount {
    private String name;
    private double balance = 0;

    public BankAccount(String name, double balance) {
        this.name = name;
        this.balance = balance;
    }

    public synchronized void deposit(double amount) {
        balance += amount;
        System.out.println("成功存入银行" + amount + "元");
    }

    public synchronized void withdraw(double amount) {
        if (balance >= amount) {
            balance -= amount;
            System.out.println("成功取出" + amount + "元");
        } else {
            System.out.println("余额不足");
        }
    }

    public synchronized void checkBalance() {
        System.out.println("账户余额:" + balance);
    }

    public synchronized String getName() {
        return name;
    }

    public synchronized void setName(String name) {
        this.name = name;
    }
}