1.899,99 € in Zahl und wieder zurück wandeln

Hi,

habe ich auch gerade festgestellt. Das liegt an der Umwandlung von einer Floatzahl in einen String.
Wird hier statt toString() die Methode toFixed(2) verwendet, so wird ein String generiert,
der einer Floatzahl mit zwei Nachkommastellen entspricht. Dh. auch die Dezimalstellen .x0 und .00
werden übernommen.

Ich habe mal etwas an Deinem Script gebastelt. Versuche mal folgendes:
Code:
var optionen = new Array( "m_absaugung",
                          "m_spuelpistole",
                          "m_wzbruchkontrolle",
                          "m_kupplungseinheit");

var preise = new Array();
preise["m_absaugung"]        = "11.000,00";
preise["m_spuelpistole"]     = "12.000,00";
preise["m_wzbruchkontrolle"] = "13.000,00";
preise["m_kupplungseinheit"] = "14.000,00";

var m_standard = "10.000,00"; <!--Grundmaschinenpreis-->

function preisfelder(){
    document.getElementById("m_standardpreisfeld").firstChild.nodeValue = "standard" + m_standard + " EUR";
    document.getElementById("m_absaugungpreisfeld").firstChild.nodeValue = "absaugung" + preise["m_absaugung"] + " EUR";
    document.getElementById("m_spuelpistolepreisfeld").firstChild.nodeValue = "spuelpistole" + preise["m_spuelpistole"] + " EUR";
    document.getElementById("m_wzbruchkontrollepreisfeld").firstChild.nodeValue = "bruchkontrolle" + preise["m_wzbruchkontrolle"] + " EUR";
    document.getElementById("m_kupplungseinheitpreisfeld").firstChild.nodeValue = "kupplungs" + preise["m_kupplungseinheit"] + " EUR";
}

// Funktion setzt die Tausendertrennzeichen in einer übergebenen Floatzahl
function setSeparator(varZahl){
    // Floatzahl in String mit 2 Nachkommastellen umwandeln
    varZahl = varZahl.toFixed(2);

    var rxc = new RegExp("\\.");
    varZahl = varZahl.replace(rxc, ",");

    // Anzahl der Vorkommastellen
    var intVorkommastellen = varZahl.length - (varZahl.length - varZahl.indexOf(","));
    // Anzahl der Trennzeichen
    var intKTrenner = Math.floor((intVorkommastellen - 1) / 3);
    // Führende Ziffern vor dem ersten Punkt
    var intZiffern = (intVorkommastellen % 3 == 0) ? 3 : (intVorkommastellen % 3);

    // Ziffern vor dem ersten Tausendertrennzeichen mit Punkt versehen
    strNew = varZahl.substring(0, intZiffern);
    // Hilfsstring ohne die bereits behandelten Ziffern
    strHelp = varZahl.substr(intZiffern, (varZahl.length - intZiffern));

    // Restlichen Tausendergruppen durchlaufen
    for(var i=0; i<intKTrenner; i++){
        // 3 Ziffern der nächsten Tausendergruppe mit Punkt an String anhängen
        strNew += "." + strHelp.substring(0, 3);
        // Neuen Hilfsstring ohne die 3 gerade behandelten Ziffern schreiben
        strHelp = strHelp.substr(intZiffern, (strHelp.length - intZiffern));
    }

    // Nachkommastellen anhängen
    strNew += varZahl.substring(intVorkommastellen, varZahl.length) + " EUR";

    return strNew;
}

function addieren(){
    var optionspreis = 0;

    for(i in optionen){
        if (document.formular.elements[optionen[i]].checked==true){
            // Regulärer Ausdruck zum Suchen nach Tausendertrennzeichen
            var rxa = new RegExp("\\.");
            // Tausendertrennzeichen entfernen
            varHelp = preise[optionen[i]].replace(rxa, "");
            // Regulärer Ausdruck zum Suchen nach Dezimalkomma
            rxa = new RegExp(",");
            // Zeichen für Dezimalkomma durch einen Punkt ersetzen
            varHelp = varHelp.replace(rxa, ".");
            // Float-Wert
            var preis = parseFloat(varHelp);
            // Zu Optionspreis addieren
            optionspreis += preis;
        }
    }

    var rxb = new RegExp("\\.");
    m_standard_help = m_standard.replace(rxb, "");
    rxb = new RegExp(",");
    m_standard_help = m_standard_help.replace(rxb, ".");
    m_standard_help = parseFloat(m_standard_help);
    var summe = optionspreis + m_standard_help;

    // Soll die Summe nicht in m_standard gespeichert werden, muss die nächste Zeile auskommentiert werden
    m_standard = setSeparator(summe);

    document.getElementById("gesamtpreisfeld").firstChild.nodeValue = setSeparator(summe);
}
Hoffentlich bringt Dich das weiter.

Ciao
Quaese
 
Zurück