1

我正在编写一些代码来计算 2 轴图上的点,我注意到当 X 或 Y 坐标为零时,它会变慢。我吐出一些调试,发现我的坐标值的比例在不断增长。我认为传递数学上下文会使返回 bigdecimal 不能有更大的规模。我希望将规模限制在我的数学上下文精度。这段代码显示了我所看到的。

MathContext mc = new MathContext(32);
BigDecimal xPos = new BigDecimal("0.0", mc);
for (int i = 0; i < 8; i++)
{
    System.out.println("" + xPos + " scale=" + xPos.scale());
    xPos = xPos.multiply(xPos, mc);
}

规模随着每次迭代而不断增加。我是否认为因为我通过乘以一个数学上下文它应该限制返回的精度是不正确的?谢谢阅读。

4

1 回答 1

1

这一切都在BigDecimal API中进行了解释。

操作首选结果量表

添加最大值(addend.scale(),augend.scale())
减去最大值(minuend.scale(),subtrahend.scale())
相乘 multiplier.scale() + multiplicand.scale()
除以股息.scale() - divisor.scale()

它以对数方式有意义。

于 2013-05-17T02:27:28.657 回答