我无法从我减去两个双精度的方法中返回精确值。我正在创建一个"银行"软件和这种方法我计算当前的利率,设定为30%,每增加5个新账户,减少2%。
这是我的代码:
public class BankAccount {
//static properties
private static double interest = 0.3;
private static ArrayList<BankAccount> accounts = new ArrayList<>();
public static double getInterestRate() {
int y = accounts.size();
double x = interest;
if (y != 0 && y % 5 == 0) {
x-=0.02;
}
return x;
}
}
我添加5个账户后,我的方法应该返回28%的利率(.28),但它返回的值为27.999999999999997%(0.27999999999999997)。我知道这是浮点数,但我不确定如何解决这个问题。我无法通过我的任何测试用例,这些测试用例都在寻找28%,26%等等......
我想使用BigDecimal类,但这是一项家庭作业,并自动评分。为此,我们给出了一个框架代码模板,因此我们使用了所有正确的变量和类型。