[Zusammenfassung der numerischen Berechnung] js Front-End-Konvertierung der numerischen Berechnungsüberprüfung

Vorwort

Diese Sammlungsfunktion dient hauptsächlich der Verarbeitung von Front-End-Berechnungsdaten
Da mein Projekt viele vom Front-End geschriebene Tabellenformelberechnungen enthält
also Es gibt ein sehr problematisches Problem: Aufgrund verschiedener Situationen beim Addieren, Subtrahieren, Multiplizieren und Dividieren werden Fehler gemeldet.
Am häufigsten kommt es vor, dass der vom Backend übergebene Wert nicht standardisiert ist. Also habe ich geschrieben Einige Methoden werfen die Back-End-Daten einheitlich hinein und überprüfen die Konvertierung direkt. Alle Werte ohne Wert werden einheitlich in 0 konvertiert, sodass bei der Berechnung keine Fehler gemeldet werden.
Manchmal hat dieses Feld keinen Wert. Es gibt mir die Zahl 0 zurück, manchmal die Zeichenfolgenzahl 0, manchmal null, manchmal '' und andere unsichere Situationen

Zahlenkonvertierung: Übergeben Sie einen Parameter und wandeln Sie ihn für Sie in eine Zahl um. Wenn die übergebene Zahl nicht in eine Zahl umgewandelt werden kann, wird 0 zurückgegeben.

numFormatting(a, f = 2) {
    
    
                if ((!isNaN(parseFloat(a)) && isFinite(a))) {
    
    
                    let num1 = parseFloat(a)
                    if (num1 !== 0 ) {
    
    
                        return Number((num1).toFixed(f))
                    } else {
    
    
                        return 0
                    }
                } else {
    
    
                    return 0
                }
            },

Zwei Dezimalstellen beibehalten: Nach der einheitlichen Verarbeitung und Berechnung von Objekten zwei Dezimalstellen beibehalten

Parameter 1: Übergeben Sie das zu übertragende Objekt.
Parameter 2: Array, Felder im Array werden nicht verarbeitet. Format: [‚Arzt‘, ‚Name‘, ‚Titel‘]
Parameter 3: Anzahl der verbleibenden Dezimalstellen, Standard 2 Ziffern

formatObj(obj, arr, f = 2) {
    
    
                let keyList = Object.keys(obj)
                keyList.forEach(key => {
    
    
                    if (arr.indexOf(key) == -1) {
    
    
                        if (obj[key].toString().indexOf('%') !== -1) {
    
    
                            let num = obj[key].slice(0, -1)
                            obj[key] = parseFloat(num) == 0 ? '0%' : parseFloat(num).toFixed(f) + '%'
                        } else {
    
    
                            obj[key] = parseFloat(obj[key]) == 0 ? 0 : parseFloat(obj[key]).toFixed(f)
                        }
                    }
                })
                return obj
            },

Zusatz

function addition(a, b, f = 2) {
    
    
    if ((!isNaN(parseFloat(a)) && isFinite(a)) && (!isNaN(parseFloat(b)) && isFinite(b))) {
    
    
        let num1 = parseFloat(a)
        let num2 = parseFloat(b)
        return (num1 + num2)==0?0:(num1 + num2).toFixed(f)
    } else {
    
    
        return 0
    }
}

Subtraktion

function subtraction(a, b, f = 2) {
    
    
    if ((!isNaN(parseFloat(a)) && isFinite(a)) && (!isNaN(parseFloat(b)) && isFinite(b))) {
    
    
        let num1 = parseFloat(a)
        let num2 = parseFloat(b)
        return (num1 - num2).toFixed(f)
    } else {
    
    
        return 0
    }
}

Multiplikation

function multiplication(a, b, f = 2){
    
    
    if ((!isNaN(parseFloat(a)) && isFinite(a)) && (!isNaN(parseFloat(b)) && isFinite(b))) {
    
    
        let num1 = parseFloat(a)
        let num2 = parseFloat(b)
        if (num1 !== 0 && num2 !== 0) {
    
    
            return (num1 * num2).toFixed(f)
        } else {
    
    
            return 0
        }
    } else {
    
    
        return 0
    }
}

Division: Übergeben Sie zwei Parameter zur Division. Der dritte Parameter ist die Anzahl der nach dem Dezimalpunkt verbleibenden Stellen. Wenn ein Problem mit den übergebenen Parametern auftritt, wird 0 zurückgegeben. Der vierte Parameter ist das Vielfache der Multiplikation. Die Standardeinstellung ist 100. Sie können 1 übergeben, wenn Sie nicht multiplizieren möchten.

function divisions(a, b, f = 2,multiple=100) {
    
    
    if ((!isNaN(parseFloat(a)) && isFinite(a)) && (!isNaN(parseFloat(b)) && isFinite(b))) {
    
    
        let num1 = parseFloat(a)
        let num2 = parseFloat(b)
        if (num1 !== 0 && num2 !== 0) {
    
    
            return ((num1 / num2) * multiple).toFixed(f)
        } else {
    
    
            return 0
        }
    } else {
    
    
        return 0
    }
}

Guess you like

Origin blog.csdn.net/seeeeeeeeeee/article/details/132801735