Правильно ли я использую класс BigDecimal?Я мог бы действительно использовать кого-то, чтобы дважды проверить мой код, чтобы убедиться, что я не делаю ошибки новичка - PullRequest
0 голосов
/ 29 октября 2011

Я работал над этим несколько дней.Получив смешные двойные ошибки, казалось, что BigDecimal был подходящим способом.Вот код: http://pastebin.com/rpbNJnHH

Раньше мне никогда не приходилось использовать BigDecimal, поэтому я надеялся, что кто-нибудь здесь сможет его осмотреть и убедиться, что не было глупых ошибок.Я прошел и проверил столько, сколько мог быть уверен.

Редактировать: Извините, это расплывчато.Итак, я использовал тип двойного примитива, но, конечно, выполнение чего-то вроде for (double i = 0; i <1; i + = .05) даст неточные значения i (вы получите такие вещи, как .0499999999 или.249999999999).Поэтому я перешел на BigDecimal.Однако я никогда раньше не использовал BD, поэтому я надеялся, что кто-нибудь сможет просмотреть мой код и убедиться, что я правильно его использую (то есть я где-то не терял точность).Спасибо </p>

1 Ответ

1 голос
/ 29 октября 2011

Я не уверен, как этот код даже компилируется.

for (MyPoint point : prevU.keySet()) {
        BigDecimal x = point.getX();
        BigDecimal t = point.getT();
}

Graphics2D g2 = (Graphics2D) g;
g2.setColor(Color.BLUE);
g2.fillOval(x, t, 1, 1);

x и t должны быть int значения и в области видимости.

Я рекомендую вам начать с чего-то очень простогокоторый компилируется и работает правильно, а затем медленно добавляется к нему.Если вы попытаетесь изменить слишком много сразу, вы, скорее всего, закончите подавляющим беспорядком.

Вместо того, чтобы использовать double или BigDecimal, я бы использовал значения int, потому что это тип, который вам нужен в конце дняи если ваш экран имеет более 2 миллиардов пикселей в поперечном или нижнем направлении, вам не нужно long, double или BigDecimal.

...