gpt4 book ai didi

java - BigDecimal 行为怪异

转载 作者:塔克拉玛干 更新时间:2023-11-01 23:10:02 27 4
gpt4 key购买 nike

我有一个 BigDecimal a1

BigDecimal a1 = new BigDecimal("0");
System.out.println(a1) //"0.0"

当我做的时候

a1.pow(2)

我打印我得到的值“0.00”
在我的程序中,我循环这个,这会导致问题,因为每次循环时,它都会将尾随的 0 加倍。为了让我的程序按预期工作,它可能会得到 2^100 个尾随零,这会降低性能并占用大量内存。我试过了

a1.stripTrailingZeros();

但它仍然存储无用的零并且需要很长时间来计算。
在这种情况下,我需要最大限度地提高性能,因此转换为字符串并进行字符串操作可能不是最好的方法。我应该怎么做才能解决这个问题?

最佳答案

BigDecimal 是不可变的(并且不在适当的位置运行)。变化

a1.pow(2);

到(类似的东西)

a1 = a1.pow(2);

当然,0 * 0 就是 0。所以,要得到一个非零数;你可以做类似的事情

public static void main(String[] args) {
BigDecimal a1 = new BigDecimal("2");
a1 = a1.pow(2);
System.out.println(a1);
}

我得到(预期的)

4

关于java - BigDecimal 行为怪异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32171880/

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