BigDecimal devide

Fireball

Aktives Mitglied
Hallo,

ich hab ein kleines "Layout Problem" bei der Rechnung mit BigDecimal.

In einer DB steht bei mir eine Menge und ein Umrechnungsfaktor drin (Typ BigDecimal).

BigDecimal result = menge.divide(umrf, java.math.MathContext.DECIMAL128);

Menge UMRF Ergebnis nach Division.toString()
1,000 1,000 1
0,001 1,000 0.001
5123,000 2,000 2561.5
0,001 1,001 0.9990009990009990009990009990009990

Wie kann ich am besten das letzte Ergebnis der Rechnung in 0.999 formatieren??
Ich will maximal 3 Nachkommastellen sehen.

Wenn eine Division mit 0.5 oder mit 0.25 endet soll sie so bleiben (also nicht 0.500, oder 0.250). Alle anderen, längeren Ergebnisse sollen aber max. 3 Nachkommastellen haben.

Danke
 

w0ddes

Bekanntes Mitglied
Mir würde speziell
Code:
ergebnisGerundet = (java.lang.Math.round( ergebnis * 1000 ) / 1000. );
einfallen...

Oder was auch helfen kann:
Java API - DecimalFormat.
Damit scheint es wohl möglich zu sein über
Java:
float f = 134.2332f; 
DecimalFormat myDF = new DecimalFormat(".00"); 
System.out.println(myDF.format((double)f));
einen float auf 2 Nachkommastellen zu Runden. Da du aber "nachfolgende" Nullen weglassen willst, solltest du
Code:
new DecimalFormat(".###")
benutzen.

Edit: Man muss nur beachten, dass DecimalFormat.format einen StringBuffer zurückliefert! Aber vllt hilfts ja trotzdem ???:L
 
Zuletzt bearbeitet:

pl4gu33

Top Contributor
also wie schon geschrieben so klappt es :

Java:
double d1=5.44444343;		
DecimalFormat df = new DecimalFormat("0.000");	
System.out.println(df.format(d1));

= 
5,444

Problem ist nur du bekommst nen String und ich kann den auch nicht wirklich zurück wandeln,... habs schon mit
Double.valueOf(..)
Double.parseDouble(..)
versucht,... also sollte das Ergebnis nicht mehr zum Rechnen benutzt werden bekommst sonst immer
java.lang.NumberFormatException, weil er halt den . durch nen Komma ersetzt denk ich mal
 
S

SlaterB

Gast
@pl4gu33 mit Nebenthema:
zum Zurückparsen nicht in die Ferne schauen (Double-Methoden), das DecimalFormat liegt doch direkt vor dir
Java:
        double d1 = 5.44444343;
        DecimalFormat df = new DecimalFormat("0.000");
        String st = df.format(d1);
        System.out.println(st);
        double d2 = df.parse(st).doubleValue();
        System.out.println(d2);

man braucht zur Ausgabe normalerweise aber eh nur einen String,
wenn man einen double oder BigDecimal zum Weiterrechnen runden will, dann gibt es andere Wege als DecimalFormat..
 

Fireball

Aktives Mitglied
Sau geil, genau das hab ich gebraucht. Hab DecimalFormat total vergessen.

Das gute ist ich brauch auch einen String, weil ich den Wert zeichnen muss :)

DANKE :)
 


Schreibe deine Antwort... und nutze den </> Button, wenn du Code posten möchtest...
Ähnliche Java Themen
  Titel Forum Antworten Datum
Robertop BigDecimal ergänzt unnötige 0 am Ende Allgemeine Java-Themen 6
M Probleme mit BigDecimal Allgemeine Java-Themen 1
ARadauer Checksumme über BigDecimal Werte Allgemeine Java-Themen 11
M float, double, BigDecimal Allgemeine Java-Themen 5
A Ungünstige BigDecimal-Klasse Allgemeine Java-Themen 44
ARadauer BigDecimal und Not a Number Allgemeine Java-Themen 4
R BigDecimal, Position des Kommas Allgemeine Java-Themen 2
J Umstellung von double auf BigDecimal Allgemeine Java-Themen 5
S wiedermal ein kleines Problem mit BigDecimal Allgemeine Java-Themen 5
B BigDecimal Schleifen Allgemeine Java-Themen 9
J BigInteger und BigDecimal im Eclipse-Debugger Allgemeine Java-Themen 3
hdi Probleme beim Rechnen mit BigDecimal Allgemeine Java-Themen 5
N BigDecimal falsch formatiert bei Locale.GERMANY Allgemeine Java-Themen 3
S String to BigDecimal Allgemeine Java-Themen 6
N BigDecimal.divide Problem Allgemeine Java-Themen 6
N setscale bigdecimal Allgemeine Java-Themen 3
M String to BigDecimal Allgemeine Java-Themen 7
N BigDecimal formatieren Allgemeine Java-Themen 2
André Uhres BigDecimal in HashSet eingefügt, aber nicht in TreeSet Allgemeine Java-Themen 2
G BigDecimal Rundet falsche Allgemeine Java-Themen 4
T bigdecimal.pow(0.5) Allgemeine Java-Themen 19
0 Keine clone-Methode für BigDecimal und BigInteger? Allgemeine Java-Themen 3

Ähnliche Java Themen


Oben