Este es el sitio web histórico de la documentación de 4D. La documentación se está trasladando progresivamente a developer.4d.com |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v20 R7
Num
|
Num ( expresion {; separador} ) -> Resultado | ||||||||
Parámetro | Tipo | Descripción | ||||||
expresion | Cadena, Booleano, Entero largo |
![]() |
Cadena a convertir en numérico o Booleano a convertir en 0 ó 1, o Expresión numérica | |||||
separador | Cadena |
![]() |
Separador decimal | |||||
Resultado | Real |
![]() |
Valor numérico del parámetro expresión | |||||
El comando Num devuelve en forma numérica la expresión de tipo cadena, booleano, o numérica que pasó en expresion. El parámetro opcional separador puede utilizarse para designar un separador decimal para la evaluación de las expresiones de tipo cadena.
Expresiones de tipo cadena
Si expresion consiste únicamente uno o más caracteres alfabéticos, Num devuelve cero. Si expresion incluye caracteres alfabéticos y caracteres numéricos, Num ignora los caracteres alfabéticos. De esta forma, Num transforma la cadena "a1b2c3" en el número 123.
Hay tres caracteres reservados que Num trata de manera particular: el separador decimal definido en el sistema (si el parámetro separador no se pasa), el guión “-”, y “e” o “E”. Estos caracteres son interpretados como caracteres de formato numérico.
Note que en el caso de que una cadena tenga más de un carácter "e", la conversión podrá dar resultados diferentes bajo Mac OS y bajo Windows.
El parámetro separador puede utilizarse para designar un separador decimal personalizado para la evaluación de expresion. Cuando la cadena a evaluar se expresa con un separador decimal diferente del separador del sistema, el comando devuelve un resultado incorrecto. El parámetro separador puede utilizarse en este caso para obtener una evaluación correcta. Cuando se pasa este parámetro, el comando no tiene en cuenta el separador decimal del sistema. Puede pasar uno o más caracteres.
Nota: el comando GET SYSTEM FORMAT puede utilizarse para buscar el separador decimal actual como también otros parámetros sistema regionales.
Expresiones de tipo Booleano
Si pasa una expresión booleana en el parámetro expresión, Num devuelve 1 si la expresión es True; de lo contrario devuelve 0 (cero).
Expresiones numéricas
Si pasa una expresión numérica en el parámetro expresion, Num devuelve tal cual el valor pasado en expresion. Esto puede ser útil especialmente en el caso de programación genérica utilizando punteros.
Expresiones indefinidas
Si la expresion se evalúa como indefinida, el comando devuelve 0 (cero). Esto es útil cuando se espera que el resultado de una expresión (por ejemplo, un atributo objeto) sea un número, incluso si puede ser indefinido.
El siguiente ejemplo ilustra cómo funciona Num cuando se pasa un argumento de tipo cadena. Cada línea asigna un número a la variable vResult. Los comentarios describen los resultados:
vResult:=Num("ABCD") ` vResult vale 0
vResult:=Num("A1B2C3") ` vResult vale 123
vResult:=Num("123") ` vResult vale 123
vResult:=Num("123,4") ` vResult vale 123,4
vResult:=Num("-123") ` vResult vale -123
vResult:=Num("-123e2") ` vResult vale -12300
En este ejemplo, [Cliente]Deuda se compara con el valor $1000. El comando Num aplicado a esta comparación devuelve 1 o 0. La multiplicación de una cadena por 1 ó 0 devuelve la cadena o la cadena vacía. Como resultado, [Cliente]Riesgo recibe el valor “Aceptable” o “Inaceptable”:
// Si el cliente tiene deudas menores a 1000, el riesgo es aceptable.
// Si el cliente tiene deudas superiores a 1000, el riesgo es inaceptable.
[Cliente]Riesgo:=("Aceptable"*Num([Cliente]Deuda<1000))+("Inaceptable"*Num([Cliente]Deuda>=1000))
Este ejemplo compara los resultados obtenidos dependiendo del separador “actual”:
$lacadena:="33,333.33"
$elnum:=Num($lacadena)
` by default, $elnum es igual a 33,33333 en un sistema francés
$elnum:=Num($lacadena;".")
` $elnum se evaluará correctamente sin importar el sistema;
` por ejemplo, 33 333,33 en un sistema francés
Producto: 4D
Tema: Cadenas de caracteres
Número
11
Modificado: 4D v11 SQL
Modificado: 4D v16 R5
Manual de lenguaje 4D ( 4D v20 R7)