Double auf 2. bzw. 4.stelle runden?

hi,

wie heisst der befehl, um ein double auf die 2. bzw. die 4.stelle zu runden?

danke
christian

Hallo!

Eine Moeglichkeit fuer die Ausgabe z.B. so:

import java.text.NumberFormat;
public class TestFormat {
 public static void main(String[] args) {
 double d1 = 0.7878;
 double d2 = 0.3434;
 System.out.println(d1 \* d2); // vorher
 NumberFormat n = NumberFormat.getInstance();
 n.setMaximumFractionDigits(4);
 System.out.println(n.format(d1 \* d2)); // nachher
 }
}

Gruss
Patrick

Hi,

danke für deine Antwort. Diese Funktion kann ich auch gut gebrauchen, um die Zahlen später schön auszugeben. Was ich aber meinte ist das mathematische runden. Hintergrund ist der:

bei automatischen inkrementieren um 0.1 in einer for-schleife erzeugt er plötzlich werte wie:
2.000000000000
2.100000000003
2.200000000008

aus diesem grund springt er einen durchlauf zu früh aus der schleife. wie kann ich das verhindern?

danke
christian

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Ich glaube, das liegt in der Natur der Sache. Das hat
irgendwas mit der Genauigkeit von double zu tun.
Hier im Forum gab es schonmal sowas aehnliches. Wenn du
Zugriff auf das Archiv hast, findest du vielleicht was.
Ich erinnere mich da an „damit muss man sich wohl oder uebel
abfinden“.

Ansonsten kann ich dir noch folgendes anbieten. Den
feinen Unterschied wirst du schnell feststellen.

public class DoubleInc {
 public static void main(String[] args) {
 double d = 2;

 for (int i = 0; i 
Gruss
Patrick

Hallo,


bei automatischen inkrementieren um 0.1 in einer for-schleife
erzeugt er plötzlich werte wie:
2.000000000000
2.100000000003
2.200000000008

speichere es als Erfahrung ab, an solchen Stellen nur mit integeralen Datentypen zu arbeiten, also etwa

for(int i=MinFor; i

Hi,
ich arbeite mit double-Werten ohnehin nicht so gerne, eben wegen diesem

2.000000000000
2.100000000003
2.200000000008

Du könntest auch Fixed-point-Werte nehmen (halt alle Werte als int 10mal so groß speichern als sie eigentlich sind). Ansonsten kannst du

static double <u>rint</u>(double a)

der Klasse Math verwenden. Das liefert den nahesten ganzzahligen double-Wert zurück. Du musst vorher die Werte mit 10 multiplizieren und hinterher durch 10 teilen.

cu
Klaus