Wenn Sie in JavaScript Dezimalstellen verwenden, um Addition, Subtraktion, Multiplikation und Abteilungsvorgänge durchzuführen, werden Sie feststellen, dass das erhaltene Ergebnis manchmal von einer langen Dezimalzahl folgt, wodurch die Operation kompliziert wird und die Berechnungsergebnisse beeinflusst. Ich habe das Internet aus den Gründen durchsucht, die ungefähr wie folgt sind: In JavaScript werden viele Dezimalstellen immer angezeigt, wenn Datenoperationen mit Dezimalstellen durchgeführt werden. Dies liegt daran, dass in JavaScript schwimmende Punktzahlen in 2-stelliger Berechnung berechnet werden.
Die Codekopie lautet wie folgt:
/**
* Zusatzbetrieb, um mehrstellige Zahlen und Berechnungsgenauigkeitsverluste zu vermeiden, nachdem die Daten zu Dezimalpunkten hinzugefügt wurden.
*
* @Param Num1 Number 1 | Num2 Nummer 2 hinzufügen
*/
Funktion numadd (num1, num2) {
var basenum, Basenum1, Basenum2;
versuchen {
Basienum1 = num1.toString (). Split (".") [1] .Length;
} catch (e) {
Basenum1 = 0;
}
versuchen {
Basienum2 = num2.toString (). Split (".") [1] .Length;
} catch (e) {
Basenum2 = 0;
}
Basienum = math.pow (10, math.max (Basisum1, Basisum2));
return (num1 * Basenum + Num2 * Basenum) / Basenum;
};
/**
* Zusatzbetrieb, um mehrstellige Zahlen und Berechnungsgenauigkeitsverluste nach Verringerung der Datenphase zu vermeiden.
*
* @param num1 wird subtrahiert | num2 ist subtrahiert
*/
Funktion numsub (num1, num2) {
var basenum, Basenum1, Basenum2;
var precision; // Genauigkeit
versuchen {
Basienum1 = num1.toString (). Split (".") [1] .Length;
} catch (e) {
Basenum1 = 0;
}
versuchen {
Basienum2 = num2.toString (). Split (".") [1] .Length;
} catch (e) {
Basenum2 = 0;
}
Basienum = math.pow (10, math.max (Basisum1, Basisum2));
Precision = (Basisum1> = Basenum2)? Basenum1: Basenum2;
return ((num1 * basenum - num2 * basisenum) / Basenum) .Tofixed (precision);
};
/**
* Multiplikationsvorgang, um mehrstellige Zahlen und Berechnungsgenauigkeitsverluste nach der Multiplizierung von Daten mit Dezimalpunkten zu vermeiden.
*
* @param num1 multiplikator | Num2 Multiplikator
*/
Funktion nummulti (num1, num2) {
var basenum = 0;
versuchen {
Basenum += num1.toString (). Split (".") [1] .Length;
} catch (e) {
}
versuchen {
Basisum += num2.toString (). Split (".") [1] .Length;
} catch (e) {
}
Rückgabenummer (Num1.ToString (). Ersetzen (".", "") * Nummer (num2.toString (). Ersetzen (".", "") / Math.pow (10, Basisenum);
};
/**
* Abteilungsvorgang, um mehrstellige Zahlen und Berechnungsgenauigkeitsverluste zu vermeiden, nachdem der Dezimalpunkt der Daten geteilt wurde.
*
* @param num1 Dividend | Num2 Dividende
*/
Funktion numdiv (num1, num2) {
var basenum1 = 0, Basenum2 = 0;
var basenum3, Basenum4;
versuchen {
Basienum1 = num1.toString (). Split (".") [1] .Length;
} catch (e) {
Basenum1 = 0;
}
versuchen {
Basienum2 = num2.toString (). Split (".") [1] .Length;
} catch (e) {
Basenum2 = 0;
}
mit (math) {
Basienum3 = Nummer (Num1.ToString (). Ersetzen (".", "");
Basienum4 = Nummer (num2.toString (). Ersetzen (".", "");
return (Basisum3 / Basienum4) * POW (10, Basisum2 - Basienum1);
}
};