Avatar
pardal486
Člen
Avatar
pardal486:26.11.2012 18:06

Zdravím. Mám tu menší problém. Mám tento kód:

Console.WriteLine("Ahoj!");

            float inp = 25;
            float mez = 1;
            float del = inp;
            string mezi = "";

            while (mez != 0)
            {
                mezi += del % 2;
                del = del / 2;
                mez = del;
            }

            Console.WriteLine("{0}", mezi);
            Console.ReadKey();

Ale místo aby vypisoval to co chci (číslo 25 v binární soustavě opačně), tak vypisuje pouze to co je v přiloženém obrázku. Poraďte prosím co jsem udělal špatně a jak to mám spravit. :(

Odpovědět 26.11.2012 18:06
Bite my shiny, metal ass!
Avatar
TomBen
Redaktor
Avatar
Odpovídá na pardal486
TomBen:26.11.2012 18:56

V csharp sice nedělám, ale tohle je jasné z toho výpisu. :)
Je to tím, že dělíš pořád dokola nezaokrouhlený float a rostou ti tam
ty desetinné části, které se pořád přilepují ke stringu i s čárkou.
Projdi si to s kalkulačkou a uvidíš. ;)

Nahoru Odpovědět 26.11.2012 18:56
Za posledních 200 miliónů let se nic zvláštního nestalo, akorát dinosauři vymřeli a opice se naučily programovat.
Avatar
matesax
Redaktor
Avatar
Odpovídá na pardal486
matesax:26.11.2012 19:01

Před dělením odčítej...

del = (del - (del % 2)) / 2;
 
Nahoru Odpovědět 26.11.2012 19:01
Avatar
Fugiczek
Redaktor
Avatar
Odpovídá na pardal486
Fugiczek:26.11.2012 19:06
while (mez != 0)

Toto není moc dobrá podmínka, protože float je single precision a v něm nejde znázornit nula. A tím pádem někdy vznikají zacyklené cykly, tak jako v tvém případě.

 
Nahoru Odpovědět  +1 26.11.2012 19:06
Avatar
matesax
Redaktor
Avatar
Odpovídá na Fugiczek
matesax:26.11.2012 19:14

Já nechápu, nač tam ten float je...

 
Nahoru Odpovědět 26.11.2012 19:14
Avatar
pardal486
Člen
Avatar
pardal486:26.11.2012 19:14

Aha díky!

Nahoru Odpovědět 26.11.2012 19:14
Bite my shiny, metal ass!
Avatar
Fugiczek
Redaktor
Avatar
Odpovídá na matesax
Fugiczek:26.11.2012 19:21

No zde jsou proměnné float naprosto zbytečné, vhodný datový typ je zde celočíselný, navíc desetinná čísla se do binární soustavy převádějí úplně jinak.

 
Nahoru Odpovědět 26.11.2012 19:21
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 7 zpráv z 7.