Проверьте, является ли значение числом

Как я могу просто проверить, если возвращаемое значение типа int или uint - номер?

4 ответов


просто:

if(_myValue is Number)
{
    fire();

}// end if

[обновление]

имейте в виду, что если _myValue типа int или uint, потом (_myValue is Number) также будет приравниваться к true. Если вы хотите знать, если _myValue - это число, которое не является целым числом (int) или целым числом без знака (uint), другими словами, поплавком, тогда вы можете просто изменить условное следующим образом:

(_myValue is Number && !(_myValue is int) && !(_myValue is uint))

давайте рассмотрим пример:

package 
{
    import flash.display.Sprite;
    import flash.events.Event;

    public class Main extends Sprite 
    {

        public function Main():void 
        {
            if (stage) init();
            else addEventListener(Event.ADDED_TO_STAGE, init);
        }

        private function init(e:Event = null):void 
        {
            removeEventListener(Event.ADDED_TO_STAGE, init);

            var number1:Object = 1; // int
            var number2:Object = 1.1; // float
            var number3:Object = 0x000000; // uint

            trace(number1 is Number); // true
            trace(number2 is Number); // true
            trace(number3 is Number); // true

            trace(number1 is Number && !(number1 is int) && !(number1 is uint)); // false
            trace(number2 is Number && !(number2 is int) && !(number2 is uint)); // true
            trace(number3 is Number && !(number3 is int) && !(number3 is uint)); // false

        }

    }

}

если вы только хотите знать, является ли myValue одним из числовые типы (номер, int, uint), вы можете проверить, если (_myValue is Number) как предположила Таурайи.

если вы и хотите знать, является ли _myValue числовая строка (например, "6320" или "5.987"), используйте это:

if (!isNaN(Number(_myValue)))
{
    fire();
}

он использует Number(_myValue) бросить _myValue до Number класса. Если Number не удается преобразовать его в полезное число, которое он вернет NaN, поэтому мы используем !isNaN() чтобы убедиться, что возвращаемое значение не является "not a number".

он вернет true для любой переменной типа Number (пока его значение не NaN), int, uint и строки, содержащие допустимое представление числа.


эти методы могут быть проблематичными, если вы хотите проверить ввод текстового поля, которое является "всегда" строкой. Если у вас есть строка "123" и "123" - это номер, вы получите ложные. Так что число ("123") даст true, но опять же так будет число ("lalala") (событие, хотя результат NaN, который скажет вам, что NaN-это число (true).

для работы со строкой вы можете сделать:

var s:String = "1234";
String(Number(s)) == String(s);
--True

var s:String = "lalala";
String(Number(s)) == String(s);
--False

здесь

  • isNaN (вы захотите это отрицать)
  • typeof на (не уверен, насколько сильно работает номер типа)
  • и и (который уже упоминался, опять же я не уверен, насколько сильны, типы держат)