Hi leutz.
Habe folgendes Problem.
Um Ein JTextField gleich mit den richtigen nachkommastellen zu füllen usw. habe ich ne kleine methode geschrieben in der unter anderem z.B. immer 2 Nachkommastellen...
mal bisschen code um zu wissen was ich meine
zuerst der aufruf:
MyPrepareClass.prepareDecimal(tf_standartpreis, "######0.00", 10, 2);
die ausgabe ist wie folgt
merk1 : 1234567.9
merk2 : 1.2345678999999999E8
merk3 : 1234567.89
merk4 : 1234567,89
das heisst.. ich gebe 1234567,9 ein, mache aus dem "," einen punkt um rechnen zu können,
dann wird * 10^nachkommastellen (in diesem fall 2) gerechnet und nach int gecastet
und hier ist der Fehler.. eigentlich müsste hier 123456790 raus kommen
das wird dann / 10^nachkommastellen gerechnet und das wär dann 1234567,90.[/code]
Habe folgendes Problem.
Um Ein JTextField gleich mit den richtigen nachkommastellen zu füllen usw. habe ich ne kleine methode geschrieben in der unter anderem z.B. immer 2 Nachkommastellen...
mal bisschen code um zu wissen was ich meine
zuerst der aufruf:
MyPrepareClass.prepareDecimal(tf_standartpreis, "######0.00", 10, 2);
Code:
// erst "," durch "." ersetzten und Wert in einer Double Variablen merken
double merk = Double.parseDouble( ftf.getText().replace(",", ".") );
System.out.println("merk1 : " + merk);
// jetzt *10^4 rechnen und nach Integer Casten(um nachkommastellen zu entfernen)
merk = merk * Math.pow(10,nachkomma);
int merk_int = (int) merk;
System.out.println("merk2 : " + merk);
merk = (double) merk_int / Math.pow(10,nachkomma);
System.out.println("merk3 : " + merk);
// Format festlegen
DecimalFormat df = new DecimalFormat ( vorlage );
System.out.println("merk4 : " + df.format(merk));
// formatiert zurück schreiben
ftf.setText(String.valueOf(df.format(merk)).replace(".", ","));
merk1 : 1234567.9
merk2 : 1.2345678999999999E8
merk3 : 1234567.89
merk4 : 1234567,89
das heisst.. ich gebe 1234567,9 ein, mache aus dem "," einen punkt um rechnen zu können,
dann wird * 10^nachkommastellen (in diesem fall 2) gerechnet und nach int gecastet
und hier ist der Fehler.. eigentlich müsste hier 123456790 raus kommen
das wird dann / 10^nachkommastellen gerechnet und das wär dann 1234567,90.[/code]