[英]BigDecimal acting weird
我有一个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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.