Sposób na przejscie z double do int

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);
0

java.lang.Math.round

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...

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

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