NCL Home > Documentation > Functions > Variable query

# isnumeric

Returns True if input is of type numeric.

## Prototype

```	function isnumeric (
arg
)

return_val [1] :  logical
```

## Arguments

arg

A variable of any type and dimensionality.

## Description

If the input is of type numeric (that is, of type double, float, long, integer, short, or byte), then isnumeric will return a single scalar value of True, and False otherwise. If arg is not a valid variable, an error message will be printed.

Conversion functions:
tobyte, tochar, todouble, tofloat, toint, toint64, tointeger, tolong, toshort, tosigned, tostring, toubyte, touint, touint64, toulong, tounsigned, toushort

Other useful functions:
typeof, sizeof, ismissing, default_fillvalue, set_default_fillvalue

## Examples

The examples below show various ways you can create an NCL variable and how to use the isxxxx functions to test their types.

The "numeric, enumeric, and snumeric" types are special and cannot be created.

• numeric - includes all variables of type byte, short, integer, long, float, and double
• enumeric - includes all variables of type ubyte, ushort, uint, ulong, int64, uint64
• snumeric - includes all numeric and enumeric types

Example 1a

You can create a variable by assigning a value to it. The example below causes NCL to use automatic type assignment:

```  i       = 38                       ; integer
xscalar = 10000.                   ; float
x1d     = (/1.,2.,3./)             ; float
str     = "This is a string"       ; string
IS_DONE = False                    ; logical

;---These are all False
print(isbyte(i))
print(isunsigned(i))
print(ischar(str))
print(isnumeric(str))
print(islogical(IS_DONE))

;---These are all True
print(isfloat(xscalar))
print(isfloat(x1d))
print(issigned(i))
print(isstring(str))
print(isnumeric(i))
```

Example 1b

You can force a variable to be a specific type by using a literal character:

```  b   = 10b                          ; byte
ub  = 100B                         ; unsigned byte
l1d = (/10,100,10000l/)            ; long
L1d = (/10000,100000L/)            ; ulong
i64 = 4611686018427387904q         ; int64
ui64 = 9223372036854775808Q        ; uint64

;---These are all True
print(isbyte(b))
print(isubyte(ub))
print(isulong(L1d))
print(isenumeric(ub))
print(issnumeric(ub))
print(isint64(i64))

;---These are all False
print(isunsigned(b))
print(ischar(b))
print(isnumeric(ub))
print(isint64(ui64))
```

Example 1c

You can use the special new command to create a variable without having to assign values:

```  b   = new(1,byte)                      ; scalar byte
s   = new(1,string)                    ; single string
d   = new(10,double,"No_FillValue")    ; array of doubles

ntim =  10
nlat =  64
nlon = 128
x3d  = new((/ntim,nlat,nlon/),double)  ; 3D array of doubles

;---These are all False
print(isuint(b))
print(ischar(s))
print(isfloat(d))

;---These are all True
print(isnumeric(x3d))
print(isdouble(x3d))
```

Example 2

Every print statement below should print True:

```  b  = new(1,byte)
c  = new(1,character)
d  = 10000.d                 ; The "d" at the end forces a double variable
fl = 1.0
g  = new(1,graphic)
i  = 20
is_unlim = (/True,False,False/)
l2 = new(1,long)
sh = new(1,short)
st = "This is a string"
i64 = 50000q   ; int64

;---Unsigned types
ub = 20B       ; ubyte
us = 50H       ; ushort
ui = 500J      ; uint
ul = 5000L     ; ulong
ui64 = 500000Q ; uint64

print(isbyte(b))
print(ischar(c))
print(isdouble(d))
print(isfloat(fl))
print(isfile(fi))
print(isgraphic(g))
print(isinteger(i))
print(islogical(is_unlim))
print(islong(l2))
print(isshort(sh))
print(isstring(st))
print(isint64(i64))
print(isuint64(ui64))
print(isulong(ul))
print(isuint(ui))
print(isushort(us))

print(isnumeric(b))
print(isnumeric(sh))
print(isnumeric(i))
print(isnumeric(l2))
print(isnumeric(fl))
print(isnumeric(d))
print(isenumeric(us))
print(isenumeric(ui))
print(isenumeric(ul))
print(isenumeric(i64))
print(isenumeric(ui64))
print(issnumeric(us))
print(issnumeric(ui))
print(issnumeric(ul))
print(issnumeric(i64))
print(issnumeric(ui64))
```