Runden eines doubles auf n nachkommastellen

Sklo

Mitglied
Ich wollte fragen wie ich einen double wert auf n nachkommastellen runden kann z.B.

1,4145 -> 1,415 od. 3,6 ->3,60

Mit der methode round in Math kann ich nichts anfangen und meines wisses gibt es auch keine methode zum runden wo man die nachkommastellen angeben kann?
Ich hoffe ihr könnt mir helfen,
mfg Sklo
 

pro2

Bekanntes Mitglied
Warum kannst du mit round nichts anfangen?:)
Wenn du z.B. aus 1.4145 -> 1.415 machen willst geht das so:

Java:
x = Math.round(x*1000)/1000.0;

Du musst dir das halt vorstellen. Du hast also 1.4145 * 1000 = 1414.5, das wird gerundet auf 1415. Das teilst du durch 1000 = 1.415.. Wenn du nur 2 Nachkommastellen haben willst nimmst du dann halt z.B. 100 statt 1000.

lg
 

r.w.

Bekanntes Mitglied
...
Java:
x = Math.round(x*1000)/1000.0;
...

Was allerdings auch schon hinter dem Link zu erfahren war. ;-)



Wenn Du allerdings die ungerundeten Werte behalten möchtest und
die Rundung nur für eine formatierte Ausgabe brauchst, geht auch folgendes:

Java:
...
    public static void main(String[] args) {
        
        double a = 1.4145;
        double b = 3.6;
        gerundeteAusgabe(a, 3);
        gerundeteAusgabe(b, 2);
   
    }   
    
    static void gerundeteAusgabe(double wert, int stellen) {
        StringBuilder sb = new StringBuilder(",##0.");
        for (int i=0; i<stellen; i++)
            sb.append("0");
        DecimalFormat df = new DecimalFormat(sb.toString());
        df.setRoundingMode(RoundingMode.HALF_UP);
        System.out.println(df.format(wert));
    }
...


Runden mit variablen Nachkommastellen geht z.B. auch...

Java:
...

/*
...so:
*/
    static double myRound(double wert, int stellen) {
        return  Math.round(wert * Math.pow(10, stellen)) / Math.pow(10, stellen);
    }
/*
...oder so:
*/    
    static double myRound2(double wert, int stellen) {
        BigDecimal b = new BigDecimal(wert);
        return  b.setScale(stellen,BigDecimal.ROUND_HALF_UP).doubleValue();        
    }
...

VG ROlf
 

AndyZ59

Mitglied
es geht auch ohne Math

public static double runden(double Wert, int NKStellen) {
// auf Anzahl Nachkommastellen NKStellen runden (ohne Math library)
// NKStellen integer >= 0
// Ausgabe unverändert bei NKStellen < 0
double Zehner = 1; // Zehnerpotenz aufbauen, lokale Var

if (NKStellen < 0) { // Ausgabe unverändert
return (Wert);

} else if (NKStellen >= 1) { // Zehnerpotenz aufbauen
for (int loop = 1; loop <= NKStellen; loop ++) {
Zehner *= 10;
}
}
// NKStellen = 0 -> abschneiden
Wert = Wert * Zehner + 0.5; // auf Anzahl Nachkommastellen runden
Wert = (int) Wert;
return (Wert / Zehner);
}
 

Robert Zenz

Top Contributor
Runden auf exakte Nachkommastellen mit einem float oder double klingt danach als haette man gerne einen exakten Wert, und das spielt sich mit Gleitkommazahlen einfach nicht. Gar nicht.

Wenn man einen exakten Wert will, um mit diesem zu arbeiten, sollte man BigDecimal einsetzen. Fuer Grafik und aehnliches ist es allerdings unerheblich, aber wenn man mit Geld arbeitet sollte man immer BigDecimal verwenden weil man ansonsten in viele kleine Rundungsfehler laeuft, und so etwas einer Buchhaltung (im besten Fall die im eigenen Haus, im schlechtesten Fall die von einer pruefenden Stelle) zu erklaeren birgt immer groeszere Gefahren als nur Kopfschmerzen bei allen Beteiligten.

Also man kann einen float/double auf eine bestimmte Anzahl Nachkommastellen runden, aber das ist ein wenig "hit and miss" und wahrscheinlich will man einen anderen Datentypen verwenden.
 

temi

Top Contributor
Der ursprüngliche Beitrag war schon über 10 Jahre alt. Vermutlich wird der TE das Problem inzwischen gelöst haben. :)
 

Robert Zenz

Top Contributor
Der ursprüngliche Beitrag war schon über 10 Jahre alt. Vermutlich wird der TE das Problem inzwischen gelöst haben. :)
Wenn man noch etwas zum Thema beizutragen hat kann man ha was dazu schreiben, egal wie alt es ist. Auch die alten Themen tauchen ja schlieszlich in Suchen auf und sind nicht begrenzt auf die urspruenglichen Beteiligten.
 

AndyZ59

Mitglied
Danke für den Hinweis auf das Alter des posts.
Ich bin neu hier im Forum und auch erst seit ein paar Tagen in Java unterwegs. Deshalb habe ich die Frage hier nachgestellt und wollte meine Tips an die Welt posten, denn man gelangt ja auch in alten Beiträgen auf eine (mehr oder weniger schlaue) Lösung :)
Genau so bin ich hier gelandet, auf der Suche nach RUNDEN
Andy
 

KonradN

Super-Moderator
Mitarbeiter
Herlich willkommen im Forum Andy.

Das mit dem Alter des Therads ist nichts wildes - das übersieht man halt mal gerne leicht.

Für Dich nur ein kleiner Hinweis: Wenn Du Code postest, dann nutze bitte Code-Tags bzw. einfach den Knopf </> links oberhalb des Eingabebereiches. Dann behält er seine Formatierung und ist besser lesbar (und mache Dinge werden nicht als Formatierungsanweisung verstanden wie z.B. ein [i] - welches die kursive Schreibweise startet.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Runden eines Doublewerts auf 13 Zeichen Java Basics - Anfänger-Themen 10
M Klasse in Runden Klammern bei Objektimplementierung Java Basics - Anfänger-Themen 4
S Runden auf den niedrigsten Wert Java Basics - Anfänger-Themen 10
M Double Wert nach n abschneiden ohne zu runden Java Basics - Anfänger-Themen 1
Z Runden Arraylist Java Basics - Anfänger-Themen 9
A Random Double mit Math.round() runden? Java Basics - Anfänger-Themen 1
J Hilfe beim Runden Java Basics - Anfänger-Themen 4
S Runden von Zahlen Java Basics - Anfänger-Themen 1
J Fehler beim Runden Java Basics - Anfänger-Themen 3
T ungewolltes Runden Java Basics - Anfänger-Themen 5
K Double Wert runden und in Int umwandeln Java Basics - Anfänger-Themen 7
A Kaufmännisches Runden mit BigDecimal Java Basics - Anfänger-Themen 14
M Double Wert auf 2 Kommastellen runden Java Basics - Anfänger-Themen 2
K Methoden Integer runden/aufrunden Java Basics - Anfänger-Themen 2
F Zeiteinheit auf ganze Zahl runder runden Java Basics - Anfänger-Themen 4
L Nachkommastellen Runden, Problem mit Syntax " }" Java Basics - Anfänger-Themen 2
J Auf den nächsten Zehner runden? Java Basics - Anfänger-Themen 4
C Nach Berechnung runden und Wert ausgeben Java Basics - Anfänger-Themen 7
A Richtig runden Java Basics - Anfänger-Themen 9
M Double-Zahlen auf Intervalle runden Java Basics - Anfänger-Themen 3
H Runden klappt nicht Java Basics - Anfänger-Themen 10
S Zahlen runden Java Basics - Anfänger-Themen 5
E Runden Java Basics - Anfänger-Themen 2
U Erste Schritte Kommazahl runden Java Basics - Anfänger-Themen 17
K Große Gleitkommazahlen runden Java Basics - Anfänger-Themen 8
Luk10 Nachkommastellen runden Java Basics - Anfänger-Themen 2
H Zahl auf 2 nachkomma stellen runden Java Basics - Anfänger-Themen 13
M Float auf bestimmte Nachkommazahl runden Java Basics - Anfänger-Themen 3
I Runden / Zweikommastellen geht nicht... Java Basics - Anfänger-Themen 3
J Konvertieren und Runden von double in int Java Basics - Anfänger-Themen 3
H Datentypen Rechnen und Runden Java Basics - Anfänger-Themen 2
O Runden - x/100 liefert long zurück Java Basics - Anfänger-Themen 7
T Runden mit Präzision vs. Runden mit Nachkommastellen Java Basics - Anfänger-Themen 4
J Runden mit printf Java Basics - Anfänger-Themen 3
-horn- Runden auf x-Stellen wirklich nur so umständlich? Java Basics - Anfänger-Themen 9
F (Verständnis)Problem: Zahl auf 2 Nachkommastellen runden Java Basics - Anfänger-Themen 5
Rika Runden Java Basics - Anfänger-Themen 6
F Werte runden Java Basics - Anfänger-Themen 11
N Runden Java Basics - Anfänger-Themen 6
J Runden auf 2 Nachkommastellen ? Java Basics - Anfänger-Themen 5
D runden ohne math! (zur not auch mit) Java Basics - Anfänger-Themen 9
D Einfache Funktion zum kaufmännischen runden Java Basics - Anfänger-Themen 8
J richtig runden Java Basics - Anfänger-Themen 4
B Double je nach Nachkommastellen kfm runden Java Basics - Anfänger-Themen 7
J Runden Java Basics - Anfänger-Themen 4
G divisions ergebnis runden Java Basics - Anfänger-Themen 3
P Runden auf eine Nachkommastelle Java Basics - Anfänger-Themen 18
S Wie runden man noch mal auf bestimmte stellen? Java Basics - Anfänger-Themen 8
S double runden Java Basics - Anfänger-Themen 5
W Runden Java Basics - Anfänger-Themen 10
G Durch Liste iterieren und nachkommastellen runden Java Basics - Anfänger-Themen 9
C Ergebnisse auf 2 Kommastellen runden Java Basics - Anfänger-Themen 3
R Zahl runden Java Basics - Anfänger-Themen 18
A Runden Java Basics - Anfänger-Themen 5
G Kein Runden Java Basics - Anfänger-Themen 3
R "Kaufmännisch runden" Java Basics - Anfänger-Themen 12
P Automatisch auf die nächst höere zahl runden? Java Basics - Anfänger-Themen 7
F Long umwandeln und auf 2 Dezimalen runden? Java Basics - Anfänger-Themen 14
M runden Java Basics - Anfänger-Themen 9
D Einmal Runden ohne alles Java Basics - Anfänger-Themen 7
P Dezimalstellen limitieren (runden auf 2 Stellen) Java Basics - Anfänger-Themen 3
L Automatischen Runden oder Abschneiden? Java Basics - Anfänger-Themen 2
C Runden auf 2 Nachkommastellen klappt nicht||| WARUM Java Basics - Anfänger-Themen 13
S Double runden funktioniert nicht immer ? Java Basics - Anfänger-Themen 2
O Dezimal in Dual...Arraygröße & Runden Java Basics - Anfänger-Themen 4
A Bestimmt blöde Frage: Zahl runden Java Basics - Anfänger-Themen 10
K Fliesskommawert runden Java Basics - Anfänger-Themen 3
L Runden Java Basics - Anfänger-Themen 2
G Zahlen runden Java Basics - Anfänger-Themen 3
C double runden Java Basics - Anfänger-Themen 6
V Double runden Java Basics - Anfänger-Themen 6
D Zahlen runden Java Basics - Anfänger-Themen 10
F double wert formatieren und runden Java Basics - Anfänger-Themen 7
C Runden einer Altersangabe Java Basics - Anfänger-Themen 5
P double Zahl runden Java Basics - Anfänger-Themen 2
M Länge eines Arrays als Variable speichern möglich? Java Basics - Anfänger-Themen 14
P Objekt einer Methode eines anderen Objektes übergeben Java Basics - Anfänger-Themen 5
P Wie kann ich beispielsweise Speicherstände eines Spiels DAUERHAFT in meinem Programm speichern? Java Basics - Anfänger-Themen 3
laxla123 Eigenschaften eines Algorithmus (determiniert vs.. deterministisch) Java Basics - Anfänger-Themen 2
monsterherz Ablauf der Erstellung eines Java Programmes Java Basics - Anfänger-Themen 17
monsterherz Fehler Semikolon fehlt - ich weiss aber nicht wo da noch eines hin sollte... Java Basics - Anfänger-Themen 21
J Farbe des Striches eines TitledBorders ändern Java Basics - Anfänger-Themen 2
pc pc pc pc pc letztes Element eines Arrays n Java Basics - Anfänger-Themen 3
walid Öffnungszeiten eines Geschäftes Java Basics - Anfänger-Themen 3
paulen1 Best Practice "Unchecked Assignment" Warnung beim erstellen eines 2D Arrays of Arraylists Java Basics - Anfänger-Themen 2
T Probleme beim Import eines Git-Repos Java Basics - Anfänger-Themen 2
U Eigenschaft eines JTextfiels per ActionListener ändern... Java Basics - Anfänger-Themen 2
B Synchronisation eines kleinen Museums Java Basics - Anfänger-Themen 47
krgewb Breite und Höhe eines Bildes in base64 auslesen Java Basics - Anfänger-Themen 3
Sachinbhatt Was ist die Notwendigkeit eines Sammlungsframeworks in Java? Java Basics - Anfänger-Themen 2
N Textdatei aus Resourcen-Ordner eines Projekts/ jar-file lesen Java Basics - Anfänger-Themen 4
B Produkt eines double - streams Java Basics - Anfänger-Themen 3
B Attribute eines Objekts einer Klasse durch statische Methode einer 2. Klasse ändern? Java Basics - Anfänger-Themen 32
S Variablen Letzte Zeile eines Strings entfernen Java Basics - Anfänger-Themen 1
D Inhalt eines Arrays ausgeben Java Basics - Anfänger-Themen 7
A Jedes zweite Element eines Arrays entfernen Java Basics - Anfänger-Themen 30
sserio Java Fx, wie erstellt man einen EventHandler, der durch das Drücken eines Button Texte in eine Table view einfügt Java Basics - Anfänger-Themen 17
J Größe eines Strings in Pixel Java Basics - Anfänger-Themen 18
M Parse-Tree eines statements darstellen Java Basics - Anfänger-Themen 0
H Java verkettete Liste, Wert eines Index zurückgeben Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben