gpt4 book ai didi

java - BigDecimal 加法在函数中给出 0

转载 作者:行者123 更新时间:2023-12-01 22:28:49 27 4
gpt4 key购买 nike

我有以下 Junit

private void calculatePF(BigDecimal leftPF,
BigDecimal rightPF) {
rightPF = rightPF.add(new BigDecimal(10));
leftPF = leftPF.add(new BigDecimal(10));
}

@Test
public void autoPlaceUser() throws Exception{
BigDecimal leftPF = BigDecimal.ZERO;
BigDecimal rightPF = BigDecimal.ZERO;
calculatePF(leftPF, rightPF);
System.out.println("rightPF : "+rightPF);
System.out.println("leftPF : "+leftPF);

}

我仍然不明白为什么即使我执行了加法并将其分配给变量,值仍然为零。我在这里想念什么吗?

最佳答案

BigDecimal不可变的。您分配给 leftPFrightPF 的值不会改变,直到您重新分配这些变量。

如果您想从 calculatePF 中获得可观察到的副作用,请将您的 BigDecimal 以数组形式传递给它,如下所示:

private void calculatePF(BigDecimal[] pf) {
pf[1] = pf[1].add(new BigDecimal(10));
pf[0] = pf[0].add(new BigDecimal(10));
}
@Test
public void autoPlaceUser() throws Exception{
BigDecimal pf[] = new BigDecimal[] {
BigDecimal.ZERO, BigDecimal.ZERO
};
calculatePF(pf);
System.out.println("rightPF : "+pf[1]);
System.out.println("leftPF : "+pf[1]);
}

关于java - BigDecimal 加法在函数中给出 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30538939/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com