Я работаю над некоторым кодом, который вычисляет точки на 2-осевом графике, и я заметил, что когда координата X или Y была равна нулю, она замедлилась. Я выплюнул некоторые отладки и обнаружил, что масштаб моего значения координаты постоянно растет. Я думал, что переход к математическому контексту приведет к тому, что возвращение большого числа людей не сможет иметь больший масштаб. Я надеялся ограничить масштаб своей точностью математического контекста. Этот код показывает, что я вижу.шкала продолжает расти за пределами математического контекста.
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);
}
Шкала продолжает увеличиваться с каждой итерацией. Неужели я ошибаюсь в том, что, поскольку я перехожу к математическому контексту, чтобы он ограничивал точность возврата? Спасибо за чтение.
Моя ошибка заключалась в том, что передача метода MathContext для умножения привела бы результат к шкале MathContext. Но, по-видимому, он смотрит только на RoundingMode. Почему он хочет MathContext, когда он действительно хочет, чтобы RoundingMode был вне меня. После вызова multiply я вызываю setScale, передавая масштаб и режим округления, и это позволяет мне ограничить точность в моем повторном уравнении. – bittramp