En JavaScript, lorsque vous utilisez des décimales pour effectuer des opérations d'addition, de soustraction, de multiplication et de division, vous constaterez que le résultat obtenu est parfois suivi d'une décimale longue, ce qui rend l'opération compliquée et affecte les résultats du calcul. J'ai recherché sur Internet les raisons, qui sont à peu près les suivantes: en JavaScript, de nombreuses décimales apparaîtront toujours lorsque les opérations de données avec des décimales. En effet, en JavaScript, les nombres de points flottants sont calculés à 2 chiffres.
La copie de code est la suivante:
/ **
* Opération d'ajout pour éviter les nombres à plusieurs chiffres et les pertes de précision de calcul après avoir ajouté des points décimaux aux données.
*
* @param num1 Ajouter le numéro 1 | num2 Ajouter le numéro 2
* /
fonction numadd (num1, num2) {
var bassénum, basenum1, basenum2;
essayer {
Basenum1 = num1.toString (). Split (".") [1] .Length;
} catch (e) {
Basenum1 = 0;
}
essayer {
Basenum2 = num2.toString (). Split (".") [1] .length;
} catch (e) {
Basenum2 = 0;
}
Basenum = Math.Pow (10, Math.max (Basenum1, Basenum2));
retour (num1 * basenum + num2 * basénum) / basénum;
};
/ **
* Opération d'ajout pour éviter les nombres à plusieurs chiffres et les pertes de précision de calcul après avoir diminué la phase de données.
*
* @param num1 est soustrait | num2 est soustrait
* /
fonction numsub (num1, num2) {
var bassénum, basenum1, basenum2;
Var Precision; // Précision
essayer {
Basenum1 = num1.toString (). Split (".") [1] .Length;
} catch (e) {
Basenum1 = 0;
}
essayer {
Basenum2 = num2.toString (). Split (".") [1] .length;
} catch (e) {
Basenum2 = 0;
}
Basenum = Math.Pow (10, Math.max (Basenum1, Basenum2));
précision = (basenum1> = basenum2)? Basenum1: Basenum2;
return ((num1 * basenum - num2 * bassénum) / basenum) .tofixed (précision);
};
/ **
* Opération de multiplication pour éviter les nombres à plusieurs chiffres et les pertes de précision de calcul après avoir multiplié les données par des points décimaux.
*
* Multiplicateur @param num1 | multiplicateur num2
* /
fonction numMulti (num1, num2) {
var bassénum = 0;
essayer {
Basenum + = num1.toString (). Split (".") [1] .Length;
} catch (e) {
}
essayer {
Basenum + = num2.toString (). Split (".") [1] .length;
} catch (e) {
}
Numéro de retour (num1.toString (). Remplace (".", "")) * numéro (num2.tostring (). Remplace (".", "")) / math.pow (10, basénum);
};
/ **
* Opération de division pour éviter les nombres à plusieurs chiffres et les pertes de précision de calcul après avoir divisé le point décimal des données.
*
* @param num1 Dividende | NUM2 Dividende
* /
fonction numdiv (num1, num2) {
var basenum1 = 0, basenum2 = 0;
var basenum3, basenum4;
essayer {
Basenum1 = num1.toString (). Split (".") [1] .Length;
} catch (e) {
Basenum1 = 0;
}
essayer {
Basenum2 = num2.toString (). Split (".") [1] .length;
} catch (e) {
Basenum2 = 0;
}
avec (math) {
Basenum3 = nombre (num1.toString (). Remplace (".", ""));
Basenum4 = nombre (num2.toString (). Remplace (".", ""));
Retour (Basenum3 / Basenum4) * POW (10, Basenum2 - Basenum1);
}
};