Hallo Anna,
ich habe eine Darstellung einer Tabelle in HTML und möchte nun per Javascript Berechnungen durchführen.
Da surfe ich ich ein wenig zur Entspannung durch das Forum und finde nun deine Frage. Habe gerade für mein Haushaltsbuch mit Berechnungen unter Javascript gespielt.
Den Hinweis auf parsefloat hast du schon bekommen.
Helfen kann dir auch noch das math-objekt.
Für die Arbeit mit Zahlen für Geldbeträge sprich mit 2 Nachkommastellen und in deutscher Schreibweise mit Komma getrennt habe ich mir zwei Funktionen geschrieben, die Berechnungen leicht machen:
function PreisCheck(preis)
{
var CPreis = preis;
var XPreis = preis.replace(/,/g,".");
//alert(XPreis);
CPreis = XPreis.replace(/./g,"");
p1 = XPreis.length;
p2 = XPreis.search(/./g);
p3 = parseInt(p1) - parseInt(p2);
if (p3 == 3) { if (p2 < '0') CPreis = CPreis + '00';if (p2 < 0) alert('Warnung!\n\n Es wurde ein Einzelpreis ohne erkennbare Nachkommastellen gefunden!\n\n Gefundener Preis = ' + preis + '\n\n Die Berechnung wird fortgeführt mit der Unterstellung, der Betrag stellt\n\n eine Ganzzahl dar.\n\n Bitte kontrollieren Sie diese Preisangabe!');}
if (p3 == '0') CPreis = CPreis + '00';
if (p3 == '1') CPreis = CPreis + '00';
if (p3 == '2') CPreis = CPreis + '0';
if (p3 > 3) alert('Fehler!\n\n Es wurde ein Einzelpreis mit mehr als zwei Nachkommstellen gefunden!\n\n Gefundener Preis = ' + preis + '\n\n Bitte korrigieren Sie die Rechnungspositionen.');
//alert('preis = ' + preis + '\np1 = ' + p1 + '\np2 =' + p2 + '\np3 = ' + p3 + 'CPreis = ' + CPreis);
return (CPreis);
}
function getKomma(zahl)
{
var zahl0 = new String(zahl);
//alert(zahl0.length);
teil1 = zahl0.length - 2;
//alert('teil1 = ' + teil1);
zahl1 = zahl0.substr(0,teil1);
zahl2 = zahl0.substr(teil1,2);
zahlk = zahl1 + ',' + zahl2;
//alert('zahl = ' + zahlk);
return(zahlk);
}
Die erste Funktion eleminiert das Komma, da Javascript damit nicht rechnen kann und die zweite fügt im Anschluss an die Berechnung ein Komma wieder ein.
Verwendung (so ungefähr):
preis = '2,10'
nokomma_preis = PreisCheck(preis);
summe = parseInt(summe) + parseInt(nokomma_preis);
print_preis = getKomma(summe);
Wenn du zwischendurch nicht nur addieren, sondern auch multiplizieren musst, schau noch mal nach "round" und "floor" beim math-pbjekt.
Nachweihnachtliche Grüße
Günter