POUZE NYNÍ: Získej až 80 % extra kreditů ZDARMA na náš interaktivní e-learning. Zjistit více.
NOVINKA: Staň se datovým analytikem od 0 Kč a získej jistotu práce, lepší plat a nové kariérní možnosti. Více informací:

Diskuze – Lekce 15 - Matematické funkce v C# a knihovna Math

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Nejnovější komentáře jsou na konci poslední stránky.
Avatar
vovce
Člen
Avatar
Odpovídá 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
Odpovídá 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á.

Odpovědět
New kid back on the block with a R.I.P
Avatar
vovce
Člen
Avatar
Odpovídá 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
Editováno 9.2.2017 12:57
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
Odpovídá 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?

Odpovědět
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
Odpovídá 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
Odpovídá 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 :-)

Nejnovější komentáře jsou na konci poslední stránky.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 56.