Hei taas kaikki prot.
Aloitin javan opiskelun pari viikkoa sitten ja nyt olen kyllästynyt, koska java on erittäin vahvasti tyypittyny.
Otsikko antaa jo aika vahvasti kysymyksen ilmi: Miten muutan double muuttujan int muuttujaksi?
Hauilla löysin vain stringgien muuttamisia numeroiksi ja toisin päin.
1. yritin vain kylmästi tallentaa double a muuttujaan int b mutta errorina tuli data maybe loss.
2. yritin tehdä oman metodin positiivisille luvuille jolle annetaan argumenttina double ja palautuksena tulee int:
Hidas tapa, tiedän kyllä.
private static int muunnos(double x){ int tulos; if(x>2147483647){System.out.println("ERROR liian suuri luku intiksi");} else{ if(x<0){System.out.println("ERROR tämä metodi on vain positiivisille luvuille");} else{ while(Math.round(x) > 0){ tulos = tulos+1; x=x-1; } } } return tulos; }
Tämäkään ei toiminut, koska errorina luki että tulos-muuttuja saattaa saada luvun jota ei voida tallentaa inttinä. :S
Lienee olemassa jokin nopea valmis tapa muuttaa doublet intiksi?
kiitos
Voit ilmoittaa haluamasi uuden tyypin muuttujan nimen edessä suluissa:
// b:n tyyppi int, a:n tyyppi double b = (int)a;
Java-kääntäjä on kyllä siinä oikeassa, että tämä muunnos voi kadottaa tietoa.
Jos et käytä 2^31-1 suurempia tai -2^31 pienempiä double arvoja, voit muuntaa ne seuraavasti:
double x = 123.123;
int tulos = Math.round(x); // jos haluat pyöristää
tulos = (int)x; // jos pelkkä desimaalien pudotus riittää
kayttaja-2499 kirjoitti:
Jos et käytä 2^31-1 suurempia tai -2^31 pienempiä double arvoja, voit muuntaa ne seuraavasti:
double x = 123.123;
int tulos = Math.round(x); // jos haluat pyöristää
tulos = (int)x; // jos pelkkä desimaalien pudotus riittää
Math.round metodi pyöristää luvun kyllä kokonais luvuksi mutta sen tyyppi on edelleen double jolloin sitä ei voi sijoittaa int tulos muuttujaan.
Mutta tämä (int) toimii hyvin, kiitos vastausksista
ps. pyöristyksen voi laittaa näin: tulos = (int)Math.round(x);
tkok kirjoitti:
Math.round metodi pyöristää luvun kyllä kokonais luvuksi mutta sen tyyppi on edelleen double
http://java.sun.com/j2se/1.4.2/docs/api/java/
round(double a)
Returns the closest long to the argument.round(float a)
Returns the closest int to the argument.
Aihe on jo aika vanha, joten et voi enää vastata siihen.