Funciones numéricas

Conjunto de Funciones de fórmula que nos permiten operar con datos numéricos.

abs

Devuelve el valor absoluto de x.

Sintaxis

abs(x)

Parámetros

x

Expresión numérica cuyo valor absoluto será calculado. Este parámetro puede ser un número, una variable, un campo, el retorno de una función, etc. La función devuelve el valor absoluto del número pasado como parámetro.

Ejemplo

abs(-357) = 357

bound

Ajusta el dato a los límites mínimo y máximo.

Sintaxis

bound(min, dato, max)

Parámetros

min

Expresión numérica, límite inicial del rango.

dato

Expresión numérica cuyo valor será calculado entre los limites.

max

Expresión numérica, límite final del rango.

Estos parámetros pueden ser una constante numérica, una variable, un campo, el retorno de una función, etc.

Ejemplo

bound(0, 357, 100 ) =100

cut

Recorta decimales de x.

Sintaxis

cut( x, decimales)

Parámetros

x

Expresión numérica cuyo valor será recortado.

decimales (opcional)

Expresión numérica con la posición del decimal a cortar. Si no se especifica nada, se tomará el valor 0.

Estos parámetros pueden ser un número, una variable, un campo, el retorno de una función, etc.

Ejemplo

cut(3.3057, 3 ) = 3.305

max

Devuelve el mayor de los dos.

Sintaxis

max(dato1, dato2)

Parámetros

dato1

Expresión numérica que se considerará en la operación.

dato2

Expresión numérica que se considerará en la operación.

Estos parámetros pueden ser un número constante, una variable, un campo, el retorno de una función, etc.

Ejemplo

max( 7, 3 ) = 7

min

Devuelve el menor de los dos.

Sintaxis

min(dato1, dato2)

Parámetros

dato1

Expresión numérica que se considerará en la operación.

dato2

Expresión numérica que se considerará en la operación.

Estos parámetros pueden ser una constante numérica, una variable, un campo, el retorno de una función, etc.

Ejemplo

min( 7, 3 ) = 3

net

Devuelve el neto del importe, es decir el importe menos el porcentaje

Sintaxis

net(importe, porcentaje)

Parámetros

importe

Expresión numérica a la que se va a quitar el porcentaje.

porcentaje

Expresión numérica con el porcentaje que restaremos al importe. Este dato debe estar comprendido entre 0 y 100

Estos parámetros pueden ser una constante, una variable, un campo, el retorno de una función, etc.

Ejemplo

net( 100, 30 ) = 70

numberToString

Convierte un numero en una cadena según el formato y la precisión que especifiquemos.

Sintaxis

numberToString(numero, formato, precisión)

Parámetros

numero

Expresión numérica a partir de la cual queremos generar una cadena. Este número puede ser un literal, una variable, un campo, el retorno de una función, etc.

formato

Cadena de formato que especifica como crear la cadena a partir del número. Las cadenas de formato posibles son:

  • f ([-]9.9)

  • L (Formato decimal con ajustes locales): aplica la configuración local (separador decimal, separador de miles, mostrar/ocultar ceros a la izquierda) del sistema en el que es visualizado el dato.

  • C (Formato contable): aplica el formato de moneda (número de decimales, separador de miles y decimal) para el idioma en el que se está ejecutando la instancia.

precisión

Número de decimales significativos después de la coma.

Ejemplos

numberToString(0.111111, "f", 2 ) = 0.11

numberToString(0.111111, "L", 2 ) = 0,11 (ejecutando con el idioma sistema e idioma del sistema = Español, España, configuración por defecto).

numberToString(0.111111, "C", 2 ) = 0,11 (ejecutando con el idioma sistema e idioma del sistema = Español, España, configuración por defecto).

percentage

Devuelve el porcentaje del importe.

Sintaxis

percentage(importe, porcentaje)

Parámetros

importe

Expresión numérica con el importe cuyo porcentaje se desea obtener.

porcentaje

Expresión numérica con el porcentaje.

Ejemplo

porcentaje(100, 25 ) = 25

random

Genera un número entero aleatorio.

Sintaxis

random()

Parámetros

No tiene.

Genera un número entero aleatorio.

Es una función basada en una función estándar de C++.

El valor que devuelve estará comprendido 0 y RAND_MAX.

RAND_MAX es un valor establecido en las librerías de C++ del sistema operativo y no debería ser inferior a 32767, pero puede ser mayor dependiendo de las librerías de sistema.

Ejemplo

random() = 123

En el caso de que queramos generar un valor aleatorio entre dos valores, podremos hacerlo con un proceso. Veamos un ejemplo:

Supongamos que queremos obtener un número aleatorio comprendido entre 1 y 100. El proceso sería como sigue:

Rem ( Obtenemos un número aleatorio )
Set (NUMERO, random()
Libre
Rem (Obtenemos el resto de dividir el número generado entre 100 y le sumamos 1)
Rem (Ya que el rango mínimo debe ser 1 )
Set (NUMERO, (NUMERO % 100) + 1)

Si queremos un rango cualquiera, podemos usar la siguiente fórmula:

Set (NUEVO_NUMERO, ( random() % ( "max" - "min") ) + "min")

round

Redondea el valor de x.

Sintaxis

round(x, decimales)

Parámetros

x

Expresión numérica a redondear.

decimales (opcional)

Expresión numérica con la posición del decimal a redondear. Si no se establece ningún valor, se tomará 0 por defecto.

Ejemplos

round(12.7822, 0 ) = 13 round(12.7822, 1 ) = 12.8 round(12.7822, 2 ) = 12.78

stringToNumber

Devuelve el valor numérico de la cadena.

Sintaxis

stringToNumber(cadena)

Parámetros

numero

Cadena que deseamos convertir en un número. Este número puede ser un literal, una variable, un campo, el retorno de una función, etc.

Debemos tener en cuenta que internamente los datos numéricos son almacenados sin separador de miles y usando el punto (.) como separador decimal, por lo que, en el caso de que las cadenas de origen no vengan en este formato, tendremos que procesarlas y realizar las sustituciones oportunas antes de convertirlas a número.

Ejemplos

stringToNumber("0.11") = 0.11

Convertir el tiempo actual a un timestamp de UNIX:

currendDateTime() = 18/mar/2021 12:55:02

stringToNumber(currentDateTime()) = 1616068502