--Exigences
Vous ne pouvez pas spécifier n chiffres fractionnaires dans l'objet Math de JavaScript. J'ai décidé de créer une fonction car je ne pouvais pas utiliser la bibliothèque JavaScript.
À ce moment, ** le calcul des nombres négatifs a causé une différence entre les résultats de JavaScript et Excel. ** ** Nous partagerons nos conclusions sur la façon de résoudre ce problème.
Tout d'abord, j'ai essayé ce codage. Une fonction qui prend des nombres et des chiffres arrondis et renvoie le résultat arrondi.
JavaScript
function myRound(number, pricision) {
var _pow = Math.pow(10, pricision);
return Math.round(number * _pow) / _pow;
};
Pour les nombres positifs, cela a fonctionné comme prévu, mais pour les nombres négatifs, le résultat était le suivant.
Valeur d'origine | JavaScript | Excel |
---|---|---|
-5.4 | -5 | -5 |
-5.5 | -5 | -6 |
-5.9 | -6 | -6 |
Il est différent du calcul dans Excel et ne peut pas répondre aux exigences.
La spécification pour arrondir les nombres négatifs était différente entre JavaScript (Math) et Excel. MDN - Math.round()
En d'autres termes, la «direction» qui arrondit 0,5 est la différence entre la direction moins et la direction zéro.
--Excel arrondit dans le sens moins, donc -5,5 → -6 --Depuis que JavaScript arrondit dans la direction zéro, -5,5 → -5
Voilà pourquoi.
Lorsque j'ai modifié le code comme suit, le résultat du calcul était le même qu'Excel.
JavaScript
function myRound(number, pricision) {
var _sign = (number < 0) ? -1 : 1;
var _pow = Math.pow(10, pricision);
return Math.round((number * _sign) * _pow) / _pow * _sign;
};
Le même principe s'applique pour arrondir et arrondir les nombres négatifs, et les résultats diffèrent entre les fonctions JavaScript et Excel. MDN - Math.floor() MDN - Math.ceil()
Toujours en Java, la direction du traitement des fractions négatives est opposée dans la classe Math et la classe BigDecimal. Faites attention à ne pas tronquer et arrondir les nombres négatifs en Java!
Donc, ** Faites attention à la «direction» lors du traitement des fractions négatives! ** **
Surcharger JavaScript Math.round et arrondir au chiffre X le plus proche