Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

Diskusia – 15. diel - Matematické funkcie v C# a knižnica Math

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Posledné komentáre sú na spodnej časti poslednej stránky.
Avatar
vovce
Člen
Avatar
Odpovedá na Lukáš Hypša
vovce:9.2.2017 11:31

V článku je opravdu chyba, klasické round funguje jako
Math.Round(-3.45, 1, MidpointRoundin­g.ToEven) = -3,4 (stejné jako Math.Round(-3,45,1) ) zaokrouhluje na nejbližší sudé číslo, je to podle standardu
zde

Math.Round(-3.45, 1, MidpointRoundin­g.AwayFromZero) = -3,5 takto vypadá klasické zaokrouhlování jak jej známe ze školy

Math.Round(3.45, 1, MidpointRoundin­g.ToEven) = 3,4
Math.Round(3.45, 1, MidpointRoundin­g.AwayFromZero) = 3,5

Avatar
David Hartinger
Vlastník
Avatar
Odpovedá na vovce
David Hartinger:9.2.2017 12:07

Z dokumentace:

Because of the loss of precision that can result from representing decimal values as floating-point numbers or performing arithmetic operations on floating-point values, in some cases the Round(Double) method may not appear to round midpoint values to the nearest even integer. In the following example, because the floating-point value .1 has no finite binary representation, the first call to the Round(Double) method with a value of 11.5 returns 11 instead of 12.

Nevychází mi z toho, že by to mělo zaokrouhlovat schválně dolů, ale že se to občas stane kvůli tomu, jak jsou čísla vnitřně reprezentovaná.

Odpovedať
New kid back on the block with a R.I.P
Avatar
vovce
Člen
Avatar
Odpovedá na David Hartinger
vovce:9.2.2017 12:56

S tou reprezentací čísla máš určitě pravdu, ale co jsem pochopil ze článku je, že Math.Round se snaží defaultně zaokrouhlit k nejbližšímu sudému číslu. A také zaleží na datovém typu zaokrouhlované hodnoty.
Př:
u decimal

Math.Round(2.135m, 2); = 2,14
Math.Round(2.125m, 2); = 2,12
Math.Round(2.135m, 2, MidpointRounding.ToEven); = 2,14
Math.Round(2.125m, 2, MidpointRounding.ToEven); = 2,12
Math.Round(2.135m, 2, MidpointRounding.AwayFromZero); = 2,14
Math.Round(2.125m, 2, MidpointRounding.AwayFromZero); = 2,13

u float

Math.Round(2.135f, 2); = 2,13
Math.Round(2.125f, 2); = 2,12
Math.Round(2.135f, 2, MidpointRounding.ToEven); =2,13
Math.Round(2.125f, 2, MidpointRounding.ToEven); =2,12
Math.Round(2.135f, 2, MidpointRounding.AwayFromZero); = 2,13
Math.Round(2.125f, 2, MidpointRounding.AwayFromZero); = 2,13
Editované
Avatar
Libor Burda
Člen
Avatar
Libor Burda:21.4.2017 10:55

Ahoj, když jsem si projekt pojmenoval Math, tak mi třída Math v takovém projektu nefungovala. Jsou nějaké podmínky pro pojmenování projektu?

Avatar
Odpovedá na Libor Burda
Michal Štěpánek:21.4.2017 11:09

Podmínky asi nejsou, ale je asi "nešťastné", neřkuli hloupé, zvolit si název projektu a cokoliv pojmenovávat "klíčovými slovy", které se v programování běžně používají. Jak má pak chudák program vědět, kdy tím slovem myslíš název čehokoliv, nebo nějakou třídu?

Odpovedať
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Libor Burda
Člen
Avatar
Odpovedá na Michal Štěpánek
Libor Burda:21.4.2017 11:20

Díky za info - dalo se to předpokládat.

Avatar
Honza Rada
Člen
Avatar
Honza Rada:5.5.2017 14:27

Super seriál díky němu jsem se naučil základy C#.NET mnohokrát ďěkuju

Avatar
Petr Zajac
Člen
Avatar
Odpovedá na Michal Štěpánek
Petr Zajac:28.2.2018 18:03

Taky jsem nechápal proč mi C# "nadává", protože jsem si taky pojmenoval projekt Math .o)
Díky za vysvětlení v komentářích :-)

Avatar
Petr Zajac
Člen
Avatar
Petr Zajac:28.2.2018 18:05

Zajímavá seriál, díky kterému jsem se naučil základy, teď se obrnit velkou trpělivostí a vrhnout se na OOP a WPF :-)

Avatar
Michal Hrtoň:6.3.2018 21:33

Děkuji za skvělý seriál. Jako začínajícímu ajťákovi mi v programování moc pomohl a někdy vysvětlil i to, co profesorka vysvětlit nedokázala. Navíc velice oceňuji přívětivý přístup Davida Čapky.
Díky, Davide :-)

Posledné komentáre sú na spodnej časti poslednej stránky.
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 10 správy z 56.