我该如何简单地检查返回类型为int
或uint
的值是否为数字?
简单:
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 is Number)
。if (!isNaN(Number(_myValue)))
{
fire();
}
它使用Number(_myValue)
将_myValue
转换为Number
类。如果Number
无法将其转换为有用的数字,则会返回NaN
,因此我们使用!isNaN()
确保返回值不是“非数字”。
对于任何类型为Number
(只要它的值不是NaN
),int
,uint
和包含有效数字表示的字符串,它都将返回true。
如果您希望检查始终为字符串的文本字段的输入,则这些方法可能会有问题。如果您有一个包含“123”的字符串并使用“123”进行数字检查,则会得到一个错误结果。因此,Number(“123”)将返回true,但是Number(“lalala”)也将返回true(即使结果为NaN,它仍将告诉您NaN是Number(true)。
要处理字符串,您可以执行以下操作:
var s:String = "1234";
String(Number(s)) == String(s);
--True
var s:String = "lalala";
String(Number(s)) == String(s);
--False
var isNumeric:Boolean = !isNaN(Number(value));
。它将处理任何数字值,但也会尝试将字符串转换为数字。如果它是一个数字或者可以转换为数字,那么它就是一个数值。没有必要用"is"运算符显式地测试Number、int和uint类型。 - Triynko