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

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

Ответ 1

Простой:

if(_myValue is Number)
{
    fire();

}// end if

[ОБНОВЛЕНИЕ]

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

(_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

        }

    }

}

Ответ 2

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

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

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

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

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

Ответ 3

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

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

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

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

Ответ 4

Есть

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