Sposób na przejscie z double do int

Sposób na przejscie z double do int
VI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2
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.

Kopiuj
 double dwaitrzyczwarte = 2.75;
double przejscie = dwaitrzyczwarte + 0.5;
    int liczba=(int)przejscie;
System.out.println("niezaokraglona: "+dwaitrzyczwarte+", zaokraglona: "+liczba);
Wibowit
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: XML Hills
0

java.lang.Math.round

airborn
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 274
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...

__krzysiek85
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1019
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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.