10
votes

Vérifiez si la valeur est un nombre

Comment puis-je simplement vérifier si une valeur renvoyée de type int ou uint est un nombre?


0 commentaires

4 Réponses :


13
votes

simple: xxx

[update]

garder à l'esprit que si _myvalue est de type < Code> int ou uint , puis (_ myvalue est numéro) assimilera également vrai . Si vous voulez savoir si _myvalue est un chiffre qui n'est pas un entier entier (int) ou non signé (UINT), en d'autres termes, un flotteur, vous pouvez simplement modifier le conditionnel comme suit: < / p> xxx

regardons un exemple: xxx


5 commentaires

"_myvalue est le numéro" "sera toujours vrai et typeof (_myvalue) sera toujours" numéro "même si _MYValue est tapé comme INT ou UINT. Selon Stackoverflow.com/a/9447869/88409 flash stocke des valeurs entières en tant qu'OB et en nombre uniquement s'il y a un Partie fractionnée de la valeur ou dépasse 0x0FFFFFFF (valeur la plus élevée pouvant être stockée dans les 28 bits restants de l'atome 32 bits qui se réserve 3 bits pour une description de type et 1 bit pour le signe). Voir aussi Stackoverflow.com/a/2697151/88409 et un cas de test ici: Troyworks.com/blog/2007/12/02/As3-unStanding-uint-Int- NUM BER


Le questionneur veut savoir si _myvalue est un nombre, pas un nombre.


@ROBERT DÉSOLÉ Je peux être un peu de Dunce parfois, pas tout à fait sûr de ce que vous obtenez.


@TAURAYI Votre méthode renvoie false pour les chaînes numériques valides. La question est ambiguë mais j'ai supposé qu'il cherchait un moyen de dire si quelque chose est un nombre, pas seulement si c'est un type numérique.


Pour prendre en compte les chaînes numériques ainsi que le nombre, INT et UINT, le test est beaucoup plus simple: var isnumeric: booléen =! Isnan (numéro (valeur)); . Cela gérera une valeur de n'importe quelle valeur, mais essaiera également de convertir des chaînes en chiffres. Si c'est un numéro ou peut être converti en un numéro, il s'agit d'une valeur numérique. Pas besoin de tester les types de numéro, INT et UINT avec le est explicitement.



3
votes

Il y a

  • isnan (vous voudrez y nier)
  • typeof (pas sûr de la manière dont Force de type Type Works)
  • et est (qui a déjà été mentionné , encore une fois, je ne suis pas sûr de la manière dont les types de types sont forts)

0 commentaires

4
votes

Ces méthodes pourraient être problématiques si vous souhaitez vérifier l'entrée d'un champ de texte, qui est «toujours» une chaîne. Si vous avez une chaîne avec "123" et que "123" est le numéro, vous obtiendrez un faux. Donc, le nombre ("123") donnerait de vrai, mais encore une fois, alors Numéro ("Lalala") ("Lalala") ("éventuel) (événement que le résultat est nan qui te dira que NaN est le numéro (vrai).

Travailler avec la chaîne que vous pourriez faire : xxx


0 commentaires

5
votes

Si vous voulez seulement savoir si MyValue est l'un des types numériques (numéro, int, uint), vous pouvez vérifier si (_ myvalue est numéro) comme Taurayi suggéré.

Si vous aussi veux savoir si _MYValue est un chaîne numérique (comme "6320" ou "5,987"), utilisez ceci: < Pré> xxx

il utilise le numéro (_myvalue) pour lancer _myvalue au numéro numéro . Si numéro est incapable de le convertir en un numéro utile, il retournera nan , nous utilisons donc ! Isnan () pour vous assurer que la valeur renvoyée n'est pas "pas un nombre".

Il retournera true pour toute variable de type numéro (tant que sa valeur n'est pas nan ) , int , uint et cordes contenant une représentation valide d'un nombre.


2 commentaires

Imo, c'est la meilleure réponse. C'est exactement ce que j'aurais affiché. Bien que cela n'explique pas complètement la relation entre le nombre, INT et UINT (c'est-à-dire que tout INT est un nombre, mais les chiffres ne sont pas nécessairement des INT ou des UINTS), cette mise en œuvre est meilleure que les contrôles conditionnels, en partie parce qu'il faut également cordes numériques en compte.


@Triynko j'ai édité ma réponse pour mieux expliquer les types numériques.