Un projet récent nous oblige à formater le montant en millièmes au début (c'est-à-dire séparer tous les trois chiffres par des virgules). Le code a été modifié. La version précédente était un oubli de ma part. Des modifications ont été apportées maintenant. S'il reste des imperfections, n'hésitez pas à me donner votre avis !
1. Prend en charge les chiffres 0 à 9 séparés par des virgules.
Le code JS est le suivant :
Copiez le code comme suit :
/**
*Formatage JS
* @param number Le numéro à formater
* @param d [0-9] séparé par des virgules
*/
fonction numFormat(nombre,d) {
var numArrs = ['0','1','2','3','4','5','6','7','8','9'],
REG_NUMBER = /^/d+(./d+)?$/;
d = d || 3; // S'il n'est pas transmis, il s'agit de 3 chiffres de millièmes.
if(isNumber(number) || isString(number) || REG_NUMBER.test(number)) {
//Convertir d'abord en chaîne
var toString = nombre + '',
isPoint = toString.indexOf('.'),
préfixe, // préfixe
suffixe, // suffixe
t = '';
si (estPoint > 0) {
préfixe = toString.substring(0,isPoint);
suffixe = toString.substring(isPoint + 1);
}sinon si(isPoint == 0) {
préfixe = '';
suffixe = toString.substring(1);
}autre {
préfixe = toString ;
suffixe = '';
}
si(préfixe != '') {
prefixArr = prefix.split('').reverse();
var isArrayIndex = isArray(d,numArrs);
si (isArrayIndex > -1) {
for(var i = 0, ilen = prefixArr.length; i < ilen; i+=1) {
t += prefixArr[i] + ((i + 1) % isArrayIndex == 0 && (i + 1) != prefixArr.length ? "," : "");
}
t = t.split("").reverse().join("");
si(suffixe != '') {
retourner t + "." + suffixe ;
}autre {
retourner t ;
}
}autre {
return 'Combien de chiffres transmis sont incorrects';
}
}else if(prefix != '' && suffixe == ''){
retourner le préfixe ;
}else if(prefix == '' && suffixe != ''){
préfixe = 0 ;
retourner préfixe + suffixe ;
}autre {
return "Il y a une erreur" ;
}
}autre {
return 'Le nombre transmis pour être formaté n'est pas conforme';
}
}
fonction isArray (élément, arrs) {
for(var i = 0, ilen = arrs.length; i < ilen; i++) {
si(élément == arrs[i]) {
je reviens;
}
}
renvoie -1 ;
}
la fonction estNombre(nombre) {
return Object.prototype.toString.apply(number) === '[numéro d'objet]';
}
fonction isString (nombre) {
return Object.prototype.toString.apply(number) === ['object String'];
}
Mais il semble y avoir une imperfection. J'appelle console.log(numFormat("1111.00")); et il affiche directement 1 111 au lieu de 1 111,00 sur la console. En d'autres termes, si la virgule décimale est 0, le navigateur effacera automatiquement. Lâchez le dernier 0 et tout le reste est normal ! Je l'ai testé et il répond globalement aux exigences. S'il y a des imperfections, donnez-moi votre avis !