Diskuze: Převaděč do binární soustavy

C# .NET .NET (C# a Visual Basic) Převaděč do binární soustavy American English version English version

Avatar
pardal486
Člen
Avatar
pardal486:

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:

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:

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:
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:

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

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

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:

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.