Проверьте, является ли значение числом
Как я могу просто проверить, если возвращаемое значение типа int
или uint
- номер?
4 ответов
просто:
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 одним из числовые типы (номер, int, uint), вы можете проверить, если (_myValue is Number)
как предположила Таурайи.
если вы и хотите знать, является ли _myValue числовая строка (например, "6320" или "5.987"), используйте это:
if (!isNaN(Number(_myValue)))
{
fire();
}
он использует Number(_myValue)
бросить _myValue
до Number
класса. Если Number
не удается преобразовать его в полезное число, которое он вернет NaN
, поэтому мы используем !isNaN()
чтобы убедиться, что возвращаемое значение не является "not a number".
он вернет true для любой переменной типа Number
(пока его значение не NaN
), int
, uint
и строки, содержащие допустимое представление числа.
эти методы могут быть проблематичными, если вы хотите проверить ввод текстового поля, которое является "всегда" строкой. Если у вас есть строка "123" и "123" - это номер, вы получите ложные. Так что число ("123") даст true, но опять же так будет число ("lalala") (событие, хотя результат NaN, который скажет вам, что NaN-это число (true).
для работы со строкой вы можете сделать:
var s:String = "1234";
String(Number(s)) == String(s);
--True
var s:String = "lalala";
String(Number(s)) == String(s);
--False