Pouze tento týden sleva až 80 % na e-learning týkající se Javy. A zároveň využij akce až 30 % zdarma při nákupu e-learningu - Více informací.
Hledáme koordinátorku kurzů a programátora, 100% home office, 100% flexibilní. Prozkoumej aktuální pozice
Java week
Avatar
martinkobelka
Redaktor
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í
+1 bodů
Řešení problému
Nahoru Odpovědět
2.3.2016 15:12
Neaktivní uživatelský účet
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Silvinios
Redaktor
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.