Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

IS NUMERIC

The IS NUMERIC function tests whether a string value can be converted to a number. This is essential for input validation before performing mathematical operations.

Syntax

result = IS NUMERIC(value)

Parameters

ParameterTypeDescription
valuestringThe value to test for numeric content

Return Value

  • Returns true if the value can be parsed as a number
  • Returns false if the value contains non-numeric characters

Description

IS NUMERIC examines a string to determine if it represents a valid numeric value. It recognizes:

  • Integers: 42, -17, 0
  • Decimals: 3.14, -0.5, .25
  • Scientific notation: 1e10, 2.5E-3

Empty strings and strings containing letters or special characters (except -, ., e, E) return false.

Examples

Basic Validation

input = HEAR "Enter a number:"
IF IS NUMERIC(input) THEN
    TALK "You entered: " + input
ELSE
    TALK "That's not a valid number"
END IF

Bot Memory with Default Value

max_items = GET BOT MEMORY "max_items"
IF max_items = "" OR NOT IS NUMERIC(max_items) THEN
    max_items = "10"
END IF

TALK "Processing up to " + max_items + " items"

Input Loop Until Valid

valid = false
DO WHILE NOT valid
    age = HEAR "Enter your age:"
    IF IS NUMERIC(age) THEN
        valid = true
    ELSE
        TALK "Please enter a number"
    END IF
LOOP
TALK "Your age is " + age

Combined Conditions with OR NOT

quantity = HEAR "How many items?"
IF quantity = "" OR NOT IS NUMERIC(quantity) THEN
    TALK "Invalid quantity, using default of 1"
    quantity = "1"
END IF

Validating Multiple Fields

price = HEAR "Enter price:"
quantity = HEAR "Enter quantity:"

IF IS NUMERIC(price) AND IS NUMERIC(quantity) THEN
    total = price * quantity
    TALK "Total: $" + total
ELSE
    IF NOT IS NUMERIC(price) THEN
        TALK "Price must be a number"
    END IF
    IF NOT IS NUMERIC(quantity) THEN
        TALK "Quantity must be a number"
    END IF
END IF

Configuration Validation

' Load timeout from config, validate it's numeric
timeout = GET BOT MEMORY "api_timeout"
IF NOT IS NUMERIC(timeout) THEN
    timeout = "30"
    SET BOT MEMORY "api_timeout", timeout
    TALK "Set default timeout to 30 seconds"
END IF

Range Checking After Validation

rating = HEAR "Rate from 1-5:"

IF NOT IS NUMERIC(rating) THEN
    TALK "Please enter a number"
ELSE IF rating < 1 OR rating > 5 THEN
    TALK "Rating must be between 1 and 5"
ELSE
    TALK "Thank you for your rating of " + rating
    SET BOT MEMORY "last_rating", rating
END IF

What IS NUMERIC Accepts

InputResultNotes
"42"trueInteger
"-17"trueNegative integer
"3.14"trueDecimal
".5"trueLeading decimal
"1e10"trueScientific notation
"2.5E-3"trueScientific with decimal
""falseEmpty string
"abc"falseLetters
"12abc"falseMixed content
"$100"falseCurrency symbol
"1,000"falseThousands separator
" 42 "trueWhitespace trimmed

Common Patterns

Default Value Pattern

value = GET BOT MEMORY key
IF value = "" OR NOT IS NUMERIC(value) THEN
    value = default_value
END IF

Safe Division

divisor = HEAR "Enter divisor:"
IF NOT IS NUMERIC(divisor) THEN
    TALK "Must be a number"
ELSE IF divisor = 0 THEN
    TALK "Cannot divide by zero"
ELSE
    result = 100 / divisor
    TALK "Result: " + result
END IF

Percentage Validation

percent = HEAR "Enter percentage (0-100):"
IF IS NUMERIC(percent) THEN
    IF percent >= 0 AND percent <= 100 THEN
        TALK "Discount: " + percent + "%"
    ELSE
        TALK "Must be between 0 and 100"
    END IF
ELSE
    TALK "Enter a number without %"
END IF

Notes

  • Whitespace: Leading and trailing spaces are trimmed before checking
  • Empty strings: Always return false
  • Locale: Uses period (.) as decimal separator
  • Currency: Does not recognize currency symbols ($, €, etc.)
  • Separators: Does not recognize thousands separators (commas)

Error Prevention

Using IS NUMERIC prevents runtime errors when converting strings to numbers:

' Without validation - could cause error
value = HEAR "Enter number:"
result = value * 2  ' Error if value is "abc"

' With validation - safe
value = HEAR "Enter number:"
IF IS NUMERIC(value) THEN
    result = value * 2
ELSE
    TALK "Invalid input"
END IF

See Also