[Java] Runden Funktion ?

11/30/2011 19:43 Dєѕтіпатіоп#1
Hey e*pvpers !

Ich suche nach einer Funktion in Java die mir einen double Wert rundet!
Ideal wäre eine Funktion die automatisch erkennt ob sie auf- oder abrunden muss .

Ansonsten wären auch einzelne Funktionen fürs auf oder abrunden okay !

Danke im Voraus..

MfG
11/30/2011 19:51 ZackBlack#2
Math.round(). Google ist dein Freund. (;
11/30/2011 20:09 XxharCs#3
Wie ZackBlack sagte, Math.round() <- ist aber bisschen schlampig meiner meinung nach da man die vorgegebene Klasse Math verwendet und so..

Auf manuellem wege rundet man so: (hab dir auch ein beispiel programm geschrieben^^)
Code:
public class Runden
{
    public static void main(String[] args){

        String eingabe = JOptionPane.showInputDialog(null, "Geben Sie eine Zahl ein: ");
        double zahl = Double.parseDouble(eingabe);
        int x = (int)(zahl + 0.5); // runden
        JOptionPane.showMessageDialog(null, "Die gerundete Zahl lautet: " + x);
    }
}
Meiner Meinung nach ist es so besser und man hat einen schönen Programmierstil ^^
11/30/2011 20:20 Obilee#4
Wenn du ein double zu einem Int castest oder zuweist rundet java automatisch

z.b

double b_wert = 133.7;
int i_wert = b_wert;

kommt für i_wert 134 raus.
12/01/2011 17:44 warfley#5
Quote:
Wie ZackBlack sagte, Math.round() <- ist aber bisschen schlampig meiner meinung nach da man die vorgegebene Klasse Math verwendet und so..
aber die entwickler von sun/oracle können besser programmieren als du, und deshalb ist es wohl besser die mitgelieferten möglichkeiten zu nutzen
12/01/2011 22:52 MrSm!th#6
Die gepostete Funktion ist aber ziemlich eingeschränkt, man kann ja nichtmal wählen, wie genau sie runden soll.

@Obi: Echt? Nice :O Dachte immer, es ist in allen Sprachen gleich, dass beim Cast von Dezimalzahl zu Integer einfach der Rest abgeschnitten wird.
12/01/2011 23:04 Obilee#7
Quote:
Originally Posted by MrSm!th View Post
Die gepostete Funktion ist aber ziemlich eingeschränkt, man kann ja nichtmal wählen, wie genau sie runden soll.

@Obi: Echt? Nice :O Dachte immer, es ist in allen Sprachen gleich, dass beim Cast von Dezimalzahl zu Integer einfach der Rest abgeschnitten wird.
Ja sorry hab gefailt, ist mir dann auch eingefallen dass dies auch in Java der Fall ist. ( das letzte mal musste ich vor nem Jahr oda so etwas runden...)

Um auf eine bestimmte Stelle zu runden macht es eher Sinn den BigDecimal zu nehmen:

Code:
BigDecimal big_dec = new BigDecimal( myDoubleValue );
big_dec = big_dec.setScale( 3, BigDecimal.ROUND_HALF_UP );
Da kannste auch sagen auf welche Stelle er runden soll und ob er dabei auf / ab rundet usw.
12/06/2011 12:56 Kinu#8
Quote:
Originally Posted by MrSm!th View Post
@Obi: Echt? Nice :O Dachte immer, es ist in allen Sprachen gleich, dass beim Cast von Dezimalzahl zu Integer einfach der Rest abgeschnitten wird.
Ist auch so

+0.5 und dann auf Integer casten. Fertig ist das runden :)

Code:
double zahlzumrunden = 0.7;
int gerundeteZahl = (int)(zahlzumrunden + 0.5 );