Quand le montant contient plus de 2 décimales, on voudrait certainement tronquer celles-ci pour obtenir un nombre sous cette forme : 22,58 $. On pourrait utiliser le truc classique de multiplier par 100 pour obtenir une valeur entière et de le diviser à nouveau par 100 pour conserver deux chiffres après la virgule :
var num = 22.5812;Dans certains cas, ça fait l'affaire pour éliminer les décimales superflues. Le hic, c'est que les décimales se terminent par zéro, elles seront aussi tronquées et ne seront pas affichées à l'écran :
console.log(Math.round(num*100)/100); // 22.58
var num = 22.5009;Ce n'est pas tout à fait le résultat attendu. Les 0 sont essentiellement inutiles dans le nombre, sauf qu'on voudrait afficher les zéros non-significatifs dans un montant monétaire. Et c'est la même chose si la valeur est entière :
console.log(Math.round(num*100)/100); // 22.5
var num = 22.00; // ou 22J'ai vu plusieurs façons de faire apparaître les zéros par programmation mais je vous suggère une fonction built-in toute simple de l'objet Number qui vous évitera d'écrire plusieurs lignes de code : toFixed(). Il suffit d'indiquer le nombre de décimales à conserver pour le résultat final :
console.log(Math.round(num*100)/100); // 22
num = 22;Un autre point qu'il faut penser quand on travaille avec des champs monétaires dans l'interface, c'est que l'utilisateur pourrait avoir tendance à saisir une virgule à la place du point. Assurez-vous de faire le remplacement avant d'effectuer des calculs ou d'insérer la valeur dans la base de données.
console.log( num.toFixed(2) ); // 22.00
num = 22.5;
console.log( num.toFixed(2) ); // 22.50
num = 22.4949;
console.log( num.toFixed(2) ); // 22.49
num = 22.5456;
console.log( num.toFixed(2) ); // 22.55
num = 22.9900;
console.log( num.toFixed(2) ); // 22.99
console.log(9.99 * 2); // 19.98
console.log(9,99 * 2); // oups, 9198 !
Aucun commentaire:
Publier un commentaire