NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
IT rekvalifikace s podporou uplatnění. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Avatar
martinkobelka
Tvůrce
Avatar
martinkobelka:2.3.2016 14:56

Mám velmi primitivní dotaz. Proč tato funkce vrací 0 a ne 0,33333333333­33333333333 ?

public static String cislo(){

        double cislo = 0;

        cislo += (1/3);

        return String.valueOf(cislo);
    }

Jak to opravit? Děkuji za odpověď

 
Odpovědět
2.3.2016 14:56
Avatar
Odpovídá na martinkobelka
Neaktivní uživatel:2.3.2016 15:12

Dělení v Javě (i v C#) je vždy celočíselné, takže buď cislo += 1/3.0; nebo cislo += 1.0/3;. Prostě alespoň jeden člen musí být double :-)

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
2.3.2016 15:12
Neaktivní uživatelský účet
Avatar
Silvinios
Tvůrce
Avatar
Odpovídá na martinkobelka
Silvinios:3.3.2016 19:49

1 i 3 jsou tzv. číselné literály typu int. Operace dělení se provede v celých číslech, tudíž je výsledek 0.

K zápisu čísel typu double se používá znak "d".

cislo += (1d/3);
 
Nahoru Odpovědět
3.3.2016 19:49
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 3 zpráv z 3.