Hallo,
Ich möchte einen String in eine Zahl (double) wandeln.
Ich nutze zur Zeit folgendes:
double da[]=new double[2]
String str = "10,2000";
BigDecimal bd = new BigDecimal(str);
bd = bd.setScale(2, BigDecimal.ROUND\_HALF\_UP);
da[u] += bd.doubleValue();
Manchmal wird allerdings der String nicht ganz umgewandelt. So wird dann aus einer 10,200 eine 10,19999999999 gemacht.
Auch wenn ich
Double.parseDouble(str);
genommen habe, kam diese falsche Umwandlung.
Wie bekomme ich eine korrekte Umwandlung des Strings in ein double?
Oder anders herum, warum klappt es manchmal nicht?
Jan
Doch, nur double ist zu ungenau
Moin
double da[]=new double[2]
String str = „10,2000“;
BigDecimal bd = new BigDecimal(str);
bd = bd.setScale(2, BigDecimal.ROUND_HALF_UP);
da[u] += bd.doubleValue();
Etwas umständlich findest du nicht ?
Manchmal wird allerdings der String nicht ganz umgewandelt. So
wird dann aus einer 10,200 eine 10,19999999999 gemacht.
Ja, double kann die Zahl nicht darstellen, also wird auf die nächst beste umgewandelt:
http://www.google.com/search?hl=en&q=double+IEEE+for…
Auch wenn ich
Double.parseDouble(str);
genommen
habe, kam diese falsche Umwandlung.
gleicher Code, gleiche Ursache.
Wie bekomme ich eine korrekte Umwandlung des Strings in ein
double?
Streich das Komma raus und rechen dann mit Integer weiter.
Oder begrenz die Anzeige der double-Zahl auf die ersten 4 Nachkommastellen.
Oder anders herum, warum klappt es manchmal nicht?
Manche Zahlen passen nunmal exakt ins double-shema, andere nicht.
cu