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で説明されています。

操作結果の優先スケール

max(addend.scale(), augend.scale()) を追加
max(minuend.scale(), subtrahend.scale()) を引きます
乗算multiplier.scale() + multiplicand.scale()
除算divider.scale() - divisor.scale()

そして、それは対数的に意味があります。

于 2013-05-17T02:27:28.657 に答える