Проверьте, является ли значение числом - PullRequest
10 голосов
/ 17 февраля 2011

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

Ответы [ 4 ]

13 голосов
/ 17 февраля 2011

Simple:

if(_myValue is Number)
{
    fire();

}// end if

[UPDATE]

Имейте в виду, что если _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

        }

    }

}
5 голосов
/ 16 ноября 2012

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

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

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

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

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

4 голосов
/ 24 августа 2012

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

Для работы со строкойВы могли бы сделать:

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

var s:String = "lalala";
String(Number(s)) == String(s);
--False
3 голосов
/ 17 февраля 2011

Есть

  • isNaN (Вы можете отрицать это)
  • typeof (Не уверен, насколько сильно работает тип Number
  • и - это (о котором уже говорилось, опять же я не уверен, насколько сильны типы)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...