NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - 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
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

 
Odpovědět
9.2.2017 11:31
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
9.2.2017 12:07
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
 
Odpovědět
9.2.2017 12:56
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?

 
Odpovědět
21.4.2017 10:55
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
21.4.2017 11:09
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.

 
Odpovědět
21.4.2017 11:20
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

Odpovědět
5.5.2017 14:27
#c#
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 :-)

 
Odpovědět
28.2.2018 18:03
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 :-)

 
Odpovědět
28.2.2018 18:05
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 :-)

 
Odpovědět
6.3.2018 21:33
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.