Hallo Forum,
Wollte mich nun mit BigDecimal auseinander setzten und hab gerade nicht so ganz den durchblick :/
es gibt zwar einige treffer in google aber hab gerade nen "hänger"
Frage 1)
aufgrund von ungenauigkeit ist float und double in ERC (Warenwirtschaft / Buchhaltung verboten)
und es sollte big decimal genommen werden.
so beispiel 1:
BigDecimal a = new BigDecimal(1.0);
BigDecimal b = new BigDecimal(0.9);
System.out.print(a.subtract(b));
0.09999999999999997779553950749686919152736663818359375
setzte ich diese in Anführungszeichen :
BigDecimal a = new BigDecimal("1.0");
BigDecimal b = new BigDecimal("0.9");
System.out.print(a.subtract(b));
0.1 -> ist korrekt.
Wieso das?
dann nun das eigentlich Problem:
wie würdet ihr z.b diese Methode schreiben:
Rat = das Artikel Objekt (menge, ek, vk ,mwst und co)
ich habe bis jetzt nur notbedürftig mit double gemacht, jedoch direkt geroundet und mit 100 multipliziert und durch /100. geteilt.
Es funktioniert soweit aber ab ca 10.000.000,00 gibt er mir den Wert mit E5 (wie heisst das nochmal :O) zurück.
ich will es aber nun richtig machen, deswegen please help,
das Problem ist bei BigDecimal dass ich nur das korrekte Ergebniss bekomme wenn diese in "" stehen, aber wie gehts mit der Variablen auslesung?
Vielen Dank!!!!!:rtfm:
Wollte mich nun mit BigDecimal auseinander setzten und hab gerade nicht so ganz den durchblick :/
es gibt zwar einige treffer in google aber hab gerade nen "hänger"
Frage 1)
aufgrund von ungenauigkeit ist float und double in ERC (Warenwirtschaft / Buchhaltung verboten)
und es sollte big decimal genommen werden.
so beispiel 1:
BigDecimal a = new BigDecimal(1.0);
BigDecimal b = new BigDecimal(0.9);
System.out.print(a.subtract(b));
0.09999999999999997779553950749686919152736663818359375
setzte ich diese in Anführungszeichen :
BigDecimal a = new BigDecimal("1.0");
BigDecimal b = new BigDecimal("0.9");
System.out.print(a.subtract(b));
0.1 -> ist korrekt.
Wieso das?
dann nun das eigentlich Problem:
wie würdet ihr z.b diese Methode schreiben:
Java:
public double getGesamtWert() {
RechnungsArtikelTool rat = null;
double gesamt = 0;
for(int i = 0; i < VAM.ArtTabelle.size(); i++) {
rat = (RechnungsArtikelTool) VAM.ArtTabelle.get(i);
double menge = rat.Menge;
double mwst = rat.Mwst;
double vk = rat.Vk;
double tmp = vk * menge * (1. + mwst);
gesamt += Math.round(tmp * 100) / 100.;
}
return gesamt;
}
ich habe bis jetzt nur notbedürftig mit double gemacht, jedoch direkt geroundet und mit 100 multipliziert und durch /100. geteilt.
Es funktioniert soweit aber ab ca 10.000.000,00 gibt er mir den Wert mit E5 (wie heisst das nochmal :O) zurück.
ich will es aber nun richtig machen, deswegen please help,
das Problem ist bei BigDecimal dass ich nur das korrekte Ergebniss bekomme wenn diese in "" stehen, aber wie gehts mit der Variablen auslesung?
Vielen Dank!!!!!:rtfm:
Zuletzt bearbeitet: