Double / Floats runden
- 
					
					
					
					
 Hallo Czengis! Danke erstmal für die Antwort. Leider funktioniert die Methode nicht für die Exponentialdarstellung, z. B. 1.34343E-8. Weisst Du auch hier einen Rat? Gruss Carsten [ Dieser Beitrag wurde am 14.05.2002 um 09:14 Uhr von cm editiert. ] 
 
- 
					
					
					
					
 Du kannst die Zahl wohl so angeben aber ob das Sinn macht ist fraglich. 
 
- 
					
					
					
					
 Hallo Czengis! Bei unserer Anwendung macht dies Sinn. Ich habe die Methode eben so umgeschrieben, dass sie auch Zahlen in Exponential-Darstellung schluckt. Dazu wird, wenn ein 'E' gefunden wird einfach dieser Teil abgeschnitten, die Methode dann rekursiv ohne die Exponential-Darstellung aufgerufen und dann der gerundete Wert wieder mit dem Exponenten zurückgegeben. Hier der Code: public static String toString (double d, int place) { String s= new Double(d).toString(); int e = s.indexOf("E"); if(e != -1) { String exp = s.substring(e, s.length()); s=s.substring(0,e); return toString(new Double(s).doubleValue(), place)+exp; } else { if (place <= 0) return ""+(int)(d+((d > 0)? 0.5 : -0.5)); s = ""; if (d < 0) { s += "-"; d = -d; } d += 0.5*Math.pow(10,-place); if (d > 1) { int i = (int)d; s += i; d -= i; } else s += "0"; if (d > 0) { d += 1.0; String f = ""+(int)(d*Math.pow(10,place)); s += "."+f.substring(1); } return s; } }Gruss Carsten 
 
- 
					
					
					
					
 Gut, wenns klappt  Ihr solltet aber noch darauf achten, dass es keinen Überlauf gibt - bei mir ist aber der 7 Stelle die Zahl total "f#cked up". Das hängt wohl mit der Tatsache zusammen, dass diese Zahl nicht durch 'nen echten Bruch darstellbar ist. Ihr solltet aber noch darauf achten, dass es keinen Überlauf gibt - bei mir ist aber der 7 Stelle die Zahl total "f#cked up". Das hängt wohl mit der Tatsache zusammen, dass diese Zahl nicht durch 'nen echten Bruch darstellbar ist.
 
- 
					
					
					
					
 Ui, ui setze 'nen Vierzeiler dagegen: [java] 
 public String round(double number, int precision)
 {
 NumberFormat nf = NumberFormat.getInstance();
 nf.setMinimumFractionDigits(precision);
 nf.setMaximumFractionDigits(precision);
 return nf.format(number);
 }[/code] bis dänn, O'Dog 
 
- 
					
					
					
					
 Pah, was der O'Dog kann, kann ich schon lange.  Hier kommt mein Zweizeiler: public String round(double number, int precision) { BigDecimal bd = new BigDecimal(number); return ("" + bd.setScale(precision, BigDecimal.ROUND_HALF_UP)); }
 
- 
					
					
					
					
 doppelt LOL jap, dann geht der Punkt wohl an dich, 
 es sei denn jetzt kommt noch jemand mit'nem EinzeilerO'Dog 
 
- 
					
					
					
					
 [java] 
 public String round(double number, int precision)
 {
 return ("" + new BigDecimal(number).setScale(precision, BigDecimal.ROUND_HALF_UP));
 }[/code] Na gut, der ist unfair, war ja schließlich deine Idee. O'Dog 
 
- 
					
					
					
					
 Heyyyy das könnten wir öfter machen  Ich denke da kann man viel lernen Ich denke da kann man viel lernen 
 
- 
					
					
					
					
 Hallo! Vielen Dank für eure Beiträge. Ich habe mich für O'Dogs 1. Version entschieden und diese erweitert, so dass Zahlen in Exponentialdarstellung richtig verarbeitet werden. Gruss Carsten 
 
- 
					
					
					
					
 Ich verschiebe diesen Thread in die FAQ.