Sposób na przejscie z double do int

Odpowiedz Nowy wątek
2011-09-09 16:36
0

Witam, jeżeli powtarzam temat który już był albo ktoś już na to wpadł to przepraszam :P

ok! oto coś fajnego... popatrzcie!
normalnie jak przechodziło się z double do int to gubiło się końcówkę. i tak np. 4,67 to 4 a nie 5.
Dlatego opracowałem sposób by normalnie zaokrąglało. Wystarczy dodać do doubla 1/2 i wtedy normalnie będzie przechodziło.

 double dwaitrzyczwarte = 2.75;
double przejscie = dwaitrzyczwarte + 0.5;
    int liczba=(int)przejscie;
System.out.println("niezaokraglona: "+dwaitrzyczwarte+", zaokraglona: "+liczba);

Pozostało 580 znaków

2011-09-09 16:42
0

java.lang.Math.round


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.

Pozostało 580 znaków

2011-09-10 13:19
0

Ale ten sposób jest mniej więcej tak stary jak świat i chyba znają go wszyscy którzy kiedykolwiek operowali na liczbach niecałkowitych...

Pozostało 580 znaków

2011-09-11 11:15
0

Z ciekawości spojrzałem na implementację Math.round w OpenJDK 6 i 7.

W obu przypadkach metoda round zawiera odwołanie do StrictMath.floor.
W JDK 6 jest to natywna metoda, a w 7 jest napisana w Javie i wykonuje kilkadziesiąt kolejnych operacji.
Jeżeli zależy Wam na wydajności i zaokrąglenie nie musi być zawsze takie same na wszystkich architekturach, to lepiej napisać własną metodę, która będzie robić "(int) (d + 0.5)"

http://www.docjar.com/html/api/java/lang/Math.java.html
http://www.docjar.com/html/api/java/lang/StrictMath.java.html


Registered Linux user #456405 | SCJP 6 | SCWCD 5 | SCBCD 5
Może zrobiono tak po prostu dlatego, że zaokrąglanie w Javie 6 nie jest przenośne? Nieprzenośne zaokrąglanie przydaje się tylko tam gdzie jego jakość nie ma znaczenia - ale w takich przypadkach użycie arytmetyki double i tak najczęściej jest strzelaniem z armaty do muchy. - Olamagato 2011-09-11 22:22

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0