length
est une propriété, pas une méthode. Vous ne pouvez pas l'appeler, donc vous n'avez pas besoin de parenthèses. ()
:
function getlength(number) {
return number.toString().length;
}
UPDATE : Comme discuté dans les commentaires, l'exemple ci-dessus ne fonctionne pas pour les nombres flottants. Pour le faire fonctionner, nous pouvons soit supprimer le point avec String(number).replace('.', '').length
ou compter les chiffres avec une expression régulière : String(number).match(/\d/g).length
.
En termes de vitesse, le moyen le plus rapide d'obtenir le nombre de chiffres d'un nombre donné est de le faire mathématiquement. Pour nombres entiers positifs il existe un merveilleux algorithme avec log10
:
var length = Math.log(number) * Math.LOG10E + 1 | 0; // for positive integers
Pour tous les types d'entiers (y compris les négatifs), il existe une solution brillante et optimisée à partir de @Mwr247 mais faites attention à l'utilisation de Math.log10
car il n'est pas pris en charge par de nombreux navigateurs existants. Ainsi, en remplaçant Math.log10(x)
avec Math.log(x) * Math.LOG10E
résoudra le problème de compatibilité.
Il ne sera pas facile de créer des solutions mathématiques rapides pour les nombres décimaux en raison des facteurs suivants comportement bien connu des mathématiques à virgule flottante Ainsi, l'approche de type "cast-to-string" sera plus facile et plus sûre. Comme mentionné par @streetlogics un moulage rapide peut être effectué avec une simple concaténation de nombres en chaînes de caractères, ce qui conduit le remplacer à transformer en solution :
var length = (number + '').replace('.', '').length; // for floats
0 votes
12/2021 - Ajouter des guillemets aux nombres comme ceci
(number+'').length
convertira automatiquement le contenu en chaîne de caractères, puis vous pourrez utiliser.length
.