Action Script chaîne à nombre
J'ai un problème avec la déclaration suivante
trace(Number("1/2")) //output NaN
mais
trace(Number("1.2")) //output 1.2
Donc, je suis un peu confus quant à pourquoi le premier énoncé n'a pas donne de bon résultat?
l'objet passé dans le constructeur devrait représenter directement un double-nombre à virgule flottante.
OriginalL'auteur sameer jain | 2012-01-27
Vous devez vous connecter pour publier un commentaire.
Probablement qu'elle s'attend à ce que la valeur à un nombre déjà, pas un calcul. Essayez d'analyser cette chaîne:
"1+2"
. Il va probablement entraîner NaN.Edit: j'ai lancer un test
Donc, comme je l'ai dit, le
Number()
constructeur s'attend à un nombre, pas un calcul.OriginalL'auteur Tim S.
Vous pouvez convertir les chaînes sont constituées de caractères numériques en Nombre réel de données à l'aide du Nombre(). La façon dont cela fonctionne est que vous passez la Chaîne de valeur du Nombre(), et à son tour, cela va créer un Numéro de version de la Chaîne qui lui a été transmis.
NaN est la sortie parce que vous tentez de convertir les données de la Chaîne pour être utilisé comme Nombre de données.
Vous avez à la trace comme ça parce opérateur "/" n'est pas un nombre.
Vous pouvez seulement de multiplier ou de diviser des nombres, PAS des chaînes de caractères. Donc, dans l'acte d'essayer de diviser la Chaîne de données, nous sommes implicitement le fait de contraindre les valeurs de changement dans le Nombre de données. Nous ne pouvons pas le faire. Nous devons convertir explicitement les données de la Chaîne pour Nombre de données tout d'abord, puis effectuer l'opération arithmétique.
Number ()
n'est pas un constructeur, mais un haut niveau de la fonction de conversion help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/... , et b) il est plus sûr et plus précis d'utiliserparseFloat()
ouparseInt()
pour convertir des chaînes de valeurs numériques (analyse de la chaîne jusqu'à ce que le premier non-numérique caractère, et renvoie toujours NaN, si la chaîne ne peut pas être convertie - vérifier le tableau deNumber()
's valeurs de retour possibles pour voir ce que je veux dire).merci pour la correction de moi. j'ai modifié ma réponse que le Nombre() n'est pas un constructeur.
OriginalL'auteur Swati Singh
En plaçant la valeur à l'intérieur de devis parcs vous rendant explicite de la chaîne.
C'est comme demander quelle est la valeur numérique du mot "cette".
Ne sais pas si cela aide, mais de supprimer les guillemets et c'est logique.
Est vos commentaires toujours le même format? c'est à dire une fraction? Est si vous pourriez analyser la chaîne, obtenir les caractères avant le / et les uns après les / et ensuite effectuer votre calcul sur ces chaînes. ex: var str:String = "1"; var str2:String = "2"; trace(Nombre(str) / Numéro(str2)); //sortie de 0,5
OriginalL'auteur crooksy88