2010-05-16 7 views

Répondre

7

Essayez str = parseInt(str, 10)

(Note: le second paramètre signifie la base pour l'analyse, dans ce cas, votre nombre sera analysé comme une décimale)

Cela étant dit, cependant, le terme "type" est utilisé assez librement dans JavaScript. Pourriez-vous expliquer pourquoi vous êtes concerné par le type de variable du tout?

+3

Toujours inclure la base. –

+0

@Sean: Merci, corrigé. –

+0

Merci, Fyodor. J'essaie d'extraire le nombre d'une chaîne en utilisant une expression rationnelle, et il renvoie une chaîne, donc je voudrais le convertir en un nombre afin qu'il puisse être traité. – Warrantica

7

Il y a trois façons de le faire:

str = parseInt(str, 10); // 10 as the radix sets parseInt to expect decimals 

ou

str = Number(str); // this does not support octals 

ou

str = +str; // the + operator causes the parser to convert using Number 

Choisissez judicieusement :)

+0

Ma question précédente était erronée. http://bclary.com/2004/11/07/#a-11.4.6 L'opérateur + ne fait pas ce qu'il fait dans les autres langues (foo> 0? foo: -foo;) –

+0

@Consp ... Je ne vous suis pas, quelle est la pertinence? Mais pour votre exemple de code, vous devez utiliser - ou ++ –

+0

Pourquoi ma réponse a-t-elle été rejetée? –

1

La meilleure façon:

var str = "1"; 
var num = +str; //simple enough and work with both int and float 

Vous pouvez également:

var str = "1"; 
var num = Number(str); //without new. work with both int and float 

ou

var str = "1"; 
var num = parseInt(str,10); //for integer number 
var num = parseFloat(str); //for float number 

NE PAS:

var str = "1"; 
var num = new Number(str); //num will be an object. typeof num == 'object' 

Utilisez parseInt uniquement pour le cas particulier, par exemple

var str = "ff"; 
var num = parseInt(str,16); //255 

var str = "0xff"; 
var num = parseInt(str); //255 
Questions connexes