BigDecimal сыныпты дұрыс пайдаланамын ба? Шынымды айтсам, өзімнің кодты екі рет тексеру үшін біреуді қолдана аламын

I've been working on this for a few days. After getting ridiculous double errors, it seemed using BigDecimal was the way to go. Here's the code: http://pastebin.com/rpbNJnHH

Мен BigDecimal-ті ешқашан пайдаланған емеспін, осылайша, мен мұнда біреуді қарап шығып, ақымақ қателер болмағанына сенімді бола алатынмын. Мен сенімдімін, бірақ мен сенімдімін.

Edit: Sorry, this is vague. So, I was using the double primitive type, but of course doing something like for(double i = 0; i < 1; i += .05) will give imprecise values for i (you'll get things like .0499999999 or .249999999999). So I switched to BigDecimal. However, I never used BD before, so I was hoping someone could look over my code and make sure I was using it correctly (i.e. I wasn't losing precision somewhere). Thanks

0
Сұрақты нақты анықтай аласыз ба? 100 сызықты бағдарламаны басқа контекстсіз тексеруді сұрағанымыз өте пайдалы емес. Кейбір жұмыстарды жасаңыз және сұрағыңызды сұраңыз.
қосылды автор Gray, көзі
codereview.stackoverflow.com тілегіңіз келуі мүмкін. StackOverflow - сұрақтар нақты бағдарламалау үшін.
қосылды автор Mark Peters, көзі
Бұл бағдарламаның не істеу керектігін де айтпайсың. Жабу үшін дауыс беру. Бұл блогты қалай қарауға болады. жақсы сұрақ қою
қосылды автор Hovercraft Full Of Eels, көзі
SSCCE жазуға тырысыңыз
қосылды автор JRL, көзі
BigDecimal-ке байланысты сіз күдік тудыратын нақты қате туралы хабарды немесе дұрыс емес нәтижені аласыз ба? бұл мәселе кішкене белгісіз, ол BigDecimal көмегімен қандай қиындықтар туралы кейбір қосымша мәліметтерді қамтуға көмектеседі
қосылды автор kaveman, көзі
@Mark, сіз, мүмкін, codereview.stackexchange.com
қосылды автор aishwarya, көзі
Мен ОС-ны редакцияладым. Басшылық үшін рақмет; бұл анық емес еді.
қосылды автор mtheoryninja, көзі

1 жауаптар

Мен бұл кодтың қалай құрастырылғанына сенімді емеспін.

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 болуы керек.

Мен сізді жинап, дұрыс жұмыс істейтін өте қарапайым нәрседен бастауды ұсынамын, содан кейін оны баяу қосыңыз. Егер бірден тым көп өзгертуге тырыссаңыз, онда сізде үлкен қиындықтар бар.

Қосарланған немесе BigDecimal пайдаланудың орнына, int мәндерін қолданамын, себебі бұл күннің соңында сізге керек түр және егер экраныңызда 2 миллиард пикселден артық немесе төмен болса, ұзақ, қосарлы немесе BigDecimal қажет емес.

1
қосылды
Hmm, неге ескі нұсқасын қоямын. Қалай болғанда да, менің кодым жақсы жазылған. Java қателерін іздеуді сұрамаймын. Мен BigDecimal-мен тәжірибелі болған біреуді оны дұрыс пайдаланып жатқаныма көз жеткізу үшін сұраймын (яғни, дәлдікті жоғалтпаймын). Мүмкін болса, мен оны жаба аламын
қосылды автор mtheoryninja, көзі