2010-02-24 4 views
16

J'essaie d'utiliser javascript pour changer un string en int.en essayant de changer la chaîne -> int

var intVal = gSpread1.Text * 1; 

Je veux type de intVal être int.

je peux obtenir une valeur int, si gSpread1.Text est inférieur à 1000.

Mais si gSpread1.Text est supérieur à 1000, intVal retours NaN

Quelle est la bonne façon d'utiliser ParseInt pour assurer que toujours renvoie une valeur int?

+0

Il devrait fonctionner, vous devrez déboguer et vérifier la valeur qui génère 'NaN' ... – CMS

+0

Remerciez Toi, maintenant j'attrape la raison. gSpread1.Text retour avec virgule (,) si gSpread1.Text est 1,234 convertir en int ne fonctionne pas ... Je vous remercie vraiment tout le monde –

Répondre

37

Avez-vous essayé intVal = parseInt(gSpread1.Text, 10);

Le 10 est appelé radix, et indiquer que le système numérique à utiliser.

MISE À JOUR: Il existe également un raccourci utile utilisant le symbole +.
par exemple: +gSpread1.Text convertira la chaîne en nombre. Et renverra un integer ou un float en fonction de la valeur de chaîne.

+0

Bonne réponse - méfiez-vous parseInt sans radix, parce que "09" n'est pas un nombre (pas 9 en octal, ce qui représente le préfixe 0) – Nicole

+0

+1 pour le raccourci :) – Binod

0

Le code suivant fonctionne pour moi:

var intVal = parseInt("100000"); 
alert(intVal); 

poster Peut-être votre code non-travail? Le problème pourrait être ailleurs.

2

Il n'y a pas de type int en JavaScript. Seul numéro. ParseInt est très bien si vous avez un nombre non décimal, ou vous pourriez avoir des déchets à la fin sur la chaîne comme "5asdkfkasdk". Mais pour le cas courant, quand vous savez que votre chaîne n'est que des chiffres décimaux, je préfère utiliser le constructeur Number(). Il semble plus élégant et plus familier aux programmeurs C et Python qui font beaucoup de casting.

var numericValue = Number("100000"); 
var numericValue2 = parseInt("100000", 10); 

Celles-ci donnent le même résultat du même type.

0

Si vous êtes sûr que votre chaîne contient int vous pouvez utiliser un seul +

var n = "455"; 
n = +n; // now n is integer 
Questions connexes