Ja jsem zadnou metodu nenabizel, protoze jsem do diskuse prisel pozde a podstatne bylo receno. Ze je nize uvedene reseni
BigDecimal a = a.multiply(new BigDecimal(10)).setScale(0,BigDecimal.ROUND_UP).divide(new BigDecimal(10)); ekvivaletni s BigDecimal a = a.setScale(1,BigDecimal.ROUND_UP); je zrejme. Takze zaver, druhe je jednodussi na pochopeni, na udrzbu jiste tez a navic rychlejsi. Takze proto bych za prvni odebiral programatorsky priklad, protoze se u nej moc nepremyslelo. Petr Burdik napsal(a): > > Hm, a zaokrouhli to vzdy a spravne to Vase reseni nahoru? Ja jenom > jestli nahodou nedostanete troska jine vysledky nez je potreba. Na > zvolene metode se mi zasadne libi to, ze funguje za vsech okolnosti. > > Toto neni klasicky matematicky model. Vy resite pouze matematickou cast > dane veci. To jsem resil i pres round. > > A jak jste videl i v tomto pripade, nazoru a postupu tu bylo mraky a > myslim ze i casem se nekdo najde, kdo to vyuzije. Slo mi o nejjednodussi > a presnou metodu. Za coz mohu vsem zucastnenym podekovat. Diky. > > Pet > > > On Thu, 19 Apr 2007 07:59:48 +0200, Jiri Mares <[EMAIL PROTECTED]> wrote: > >> >> Ahojky, >> >> klasika jak se da mlatit prazdna slama, misto aby se delalo neco >> smysluplneho. Takhle pekne kvuli zaokrouhlovani pridat >> nasobeni a deleni 10ti .... >> >> Za to bych odebiral programatorsky prukaz na 2 roky! >> >> Jirka >> >> Petr Burdik napsal(a): >>> >>> Pro Vasi informaci jsem pouzil tento: >>> BigDecimal a = a.multiply(new >>> BigDecimal(10)).setScale(0,BigDecimal.ROUND_UP).divide(new >>> BigDecimal(10)); >>> >>> To mi alespon poradil nekdo v tomto threadu s tim, ze jsem nakonec >>> zaokrouhloval na desetiny nahoru. >>> >>> Diky moc jeste jednou vsem :) >>> >>> Pet >>> >>> >>> On Wed, 18 Apr 2007 12:07:12 +0200, Richard Malaschitz >>> <[EMAIL PROTECTED]> wrote: >>> >>>> Tak to je škoda, že táto plodná diskusia plná zaujímavých algoritmov >>>> musí >>>> skončiť. Už som tešil na superrýchly algoritmus zaokrúhľovania: >>>> >>>> static int[] round = new int[] >>>> {0,0,0,0,10,10,10,10,10,10,10,10,10,10,20,20,20,20,20,20,20,20,20,20,30,30,...} >>>> >>>> >>>> >>>> int getHaliere(float suma) { >>>> int haliere = Math.round(suma * 100) % 100; >>>> return round[haliere]; >>>> } >>>> >>>> >>>> Diky moc. Uz to mam vyresene. Oni si to jeste poupravili jinak. >>>> Nakonec je >>>>> >>> >>> >>> >>> --Using Opera's revolutionary e-mail client: http://www.opera.com/mail/ >> > > > > --Using Opera's revolutionary e-mail client: http://www.opera.com/mail/ -- Jiří Mareš (mailto:[EMAIL PROTECTED]) ČSAD SVT Praha, s.r.o. (http://www.svt.cz) Czech Republic