检查值是否为数字

时间:2011-02-17 08:53:35

标签: flash actionscript-3 adobe air

如何才能检查intuint类型的返回值是否为数字?

4 个答案:

答案 0 :(得分:13)

简单:

if(_myValue is Number)
{
    fire();

}// end if

<强> [UPDATE]

请注意,如果_myValue的类型为intuint,则(_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

        }

    }

}

答案 1 :(得分:5)

如果您只想知道myValue是数字类型(Number,int,uint)之一,您可以检查Taurayi建议的(_myValue is Number)是否。

如果 想知道_myValue是数字字符串(例如“6320”或“5.987”),请使用:

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

它使用Number(_myValue)_myValue投射到Number类。如果Number无法将其转换为有用的数字,则会返回NaN,因此我们使用!isNaN()确保返回的值不是“非数字”。

对于Number类型的任何变量(只要其值不是NaN),intuint以及包含有效的数字表示。

答案 2 :(得分:4)

如果您希望检查文本字段的输入,这些方法可能会出现问题,该字段始终为字符串。如果你有一个带有“123”的字符串并且用“123”检查是否为数字,你将得到一个错误。所以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 :(得分:3)

  • isNaN(你会想要否定这一点)
  • typeof(不确定数字类型有多强)
  • is(已经提到过,我再也不确定类型有多强)