如何才能检查int
或uint
类型的返回值是否为数字?
答案 0 :(得分:13)
简单:
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
}
}
}
答案 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
),int
,uint
以及包含有效的数字表示。
答案 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)