Skip to main content
Use the todouble function (or its synonym toreal) to convert various data types to a real (floating-point) number. This is helpful when you need to normalize numeric values from different sources into decimal format for mathematical operations, comparisons, or aggregations. You typically use todouble when working with numeric strings, integers, or other types that need to be converted to floating-point numbers for precise calculations or when decimal precision is required.

For users of other query languages

If you come from other query languages, this section explains how to adjust your existing queries to achieve the same results in APL.
In Splunk, you use tonumber to convert values to numbers, which handles both integers and decimals. In APL, todouble specifically converts to floating-point numbers, while toint or tolong handle integers.
... | eval price = tonumber(price_string)
In standard SQL, you use CAST(... AS DOUBLE) or CAST(... AS REAL) to convert values to floating-point numbers. In APL, todouble and toreal are synonyms that provide a simpler way to convert to real numbers.
SELECT CAST('1567.89' AS DOUBLE) AS price FROM logs;

Usage

Syntax

todouble(value)
toreal(value)

Parameters

NameTypeDescription
valuedynamicThe value to convert to real.

Returns

If conversion is successful, the result is a value of type real. If conversion isn’t successful, the result is null.

Conversion behavior

The todouble function converts values based on their type:
  • Integer: Converted to float. For example, 1 becomes 1.0, -1 becomes -1.0.
  • String: Parsed as a 64-bit float using Go floating-point literal syntax, which supports scientific notation. For example, "1e3" becomes 1000.0.
  • Boolean: true becomes 1.0, false becomes 0.0
  • Datetime: Converted to nanoseconds since epoch as a float
  • Duration: Converted to float nanoseconds

Use case examples

Convert string representations of numeric values to real numbers for mathematical calculations and aggregations.Query
['sample-http-logs']
| extend duration_seconds = todouble(['req_duration_ms']) / 1000.0
| extend is_slow = duration_seconds > 0.001
| where is_slow == true
| project _time, ['uri'], ['req_duration_ms'], duration_seconds, is_slow
Run in PlaygroundOutput
_timeurireq_duration_msduration_secondsis_slow
Jun 24, 09:28:10/api/users15001.5true
This example converts milliseconds to seconds using todouble to ensure decimal precision in the calculation, enabling accurate time-based analysis.
  • toreal: Synonym for todouble. Both functions convert values to real numbers.
  • toint: Converts input to integer. Use toint when you need whole numbers, and todouble when you need decimal precision.