Longueur du nombre en JavaScript



Answers

Ok, beaucoup de réponses, mais c'est une pure mathématique, juste pour le fun ou pour se souvenir que Math est Important:

var len = Math.ceil(Math.log(num + 1) / Math.LN10);

Cela donne réellement la "longueur" du nombre même si c'est sous forme exponentielle. num est censé être un entier non négatif ici: s'il est négatif, prenez sa valeur absolue et ajustez le signe après.

Mise à jour pour ES2015

Maintenant que Math.log10 est une chose , vous pouvez simplement écrire

const len = Math.ceil(Math.log10(num + 1));
Question

Je cherche à obtenir la longueur d'un nombre en javascript / jquery

J'ai essayé value.length sans aucun succès, ai-je besoin de convertir cela en une chaîne en premier?




D'abord le convertir en une chaîne:

var mynumber = 123;
alert((""+mynumber).length);

L'ajout d'une chaîne vide impliquera implicitement que mynumber devienne une chaîne.




Pourrait également utiliser une chaîne de modèle:

const num = 123456

`${num}`.length // 6




Trois méthodes différentes toutes avec une vitesse variable.

// 34ms
let weissteinLength = function(n) { 
    return (Math.log(Math.abs(n)+1) * 0.43429448190325176 | 0) + 1;
}

// 350ms
let stringLength = function(n) {
    return n.toString().length;
}

// 58ms
let mathLength = function(n) {
    return Math.ceil(Math.log(n + 1) / Math.LN10);
}

// Simple tests below if you care about performance.

let iterations = 1000000;
let maxSize = 10000;

// ------ Weisstein length.

console.log("Starting weissteinLength length.");
let startTime = Date.now();

for (let index = 0; index < iterations; index++) {
    weissteinLength(Math.random() * maxSize);
}

console.log("Ended weissteinLength length. Took : " + (Date.now() - startTime ) + "ms");


// ------- String length slowest.

console.log("Starting string length.");
startTime = Date.now();

for (let index = 0; index < iterations; index++) {
    stringLength(Math.random() * maxSize);
}

console.log("Ended string length. Took : " + (Date.now() - startTime ) + "ms");


// ------- Math length.

console.log("Starting math length.");
startTime = Date.now();

for (let index = 0; index < iterations; index++) {
    mathLength(Math.random() * maxSize);
}



Oui, vous devez convertir en chaîne afin de trouver la longueur.Par exemple

var x=100;// type of x is number
var x=100+"";// now the type of x is string
document.write(x.length);//which would output 3.



Vous devez faire le nombre à la chaîne afin de prendre la longueur

var num = 123;

alert((num + "").length);

ou

alert(num.toString().length);



Related