4D v16.3

Num

Página Inicial

 
4D v16.3
Num

Num 


 

Num ( expressao {; separador} ) -> Resultado  
Parâmetro Tipo   Descrição
expressao  String, Booleano, Inteiro longo in Cadeia para a qual retornar a forma numérica, ou Booleano para devolver 0 ou 1, ou expressão numérica
separador  String in Separador decimal
Resultado   Real in Formato numérico do parâmetro da expressão

O comando Num devolve em forma numérica a expressão de tipo cadeia, booleano, ou numérica que passou em expressao. O parâmetro opcional separador pode ser utilizado para determinar um separador decimal para a avaliação das expressões de tipo cadeia.

Expressões de tipo cadeia
Se expressao consiste apenas de um ou mais caracteres alfabéticos, Num devolve zero. Se expressao inclui caracteres alfabéticos e caracteres numéricos, o comando ignora os caracteres alfabéticos. Assim, Num transforma a cadeia "a1b2c3" no número 123.

Há três caracteres reservados que Num trata de maneira especial: o separador decimal definido dentro do sistema (se o parâmetro separador não for passado), o hífen “-”, e “e” ou “E”. Estes caracteres são interpretados como caracteres de formato numérico.

  • O separador decimal é interpretado como uma casa decimal e deve aparecer em uma cadeia numérica. Como padrão, o comando utiliza o separador decimal definido no sistema operativo. Pode modificar este caractere utilizando o parâmetro separador (ver a continuação).
  • O hífen define um número ou expoente negativo. O hífen deve aparecer antes dos caracteres numéricos negativos ou depois da “e” para um expoente. Exceto pelo caractere “e”, se um hífen está em uma cadeia numérica, a porção da cadeia depois do hífen é ignorado. Por exemplo, Num("123-456") devolve 123, mas Num("-9") devolve -9.
  • O "e" ou "E" faz com que todos os caracteres numéricos à direita sejam interpretados como a potência de um expoente. O “e” deve estar em uma cadeia numérica. Desta forma, Num("123e–2") devolve 1,23.
  • Note que no caso de uma cadeia ter mais de um caractere "e", a conversão poderá dar resultados diferentes em Mac OS e em Windows.
O parâmetro separador pode ser utilizado para determinar um separador decimal personalizado para a avaliação de expressao. Quando a cadeia a avaliar for expressa com um separador decimal diferente do separador do sistema, o comando devolve um resultado incorreto. O parâmetro separador pode ser utilizado neste caso para obter uma avaliação correta. Quando se passa este parâmetro, o comando não considera o separador decimal do sistema. Pode passar um ou mais caracteres.

Nota: o comando GET SYSTEM FORMAT pode ser utilizado para descobrir qual o separador decimal atual assim como outros parâmetros de sistema regionais.

Expressões de tipo Booleano

Se passar uma expressão booleana, Num devolve 1 se a expressão for True; do contrário devolve 0 (zero).

Expressões numéricas

Se passar uma expressão numérica no parâmetro expressao, Num devolve o valor passado no parâmetro expressao da maneira que estiver. Isso pode ser útil especialmente no caso de programação genérica utilizando ponteiros.

O exemplo abaixo ilustra como funciona Num quando for passado um argumento de tipo cadeia. Cada linha atribui um número à variável vResult. Os comentários descrevem os 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

Neste exemplo, [Cliente]Dívida é comparado com o valor $1000. O comando Num aplicado a esta comparação devolve 1 ou 0. A multiplicação de uma cadeia por 1 ou 0 devolve a cadeia ou a cadeia vazia. Como resultado, [Cliente]Risco recebe o valor “Aceitável” ou “Inaceitável”:

  // Se o cliente tiver dívidas menores a 1000, o risco é aceitável.
  // Se o cliente tiver dívidas superiores a 1000, o risco é inaceitável.
 [Cliente]Risco:=("Aceitável"*Num([Cliente]Dívida<1000))+("Inaceitável"*Num([Cliente]Dívida>=1000))

Este exemplo compara os resultados obtidos dependendo do separador “atual”:

 $umaCadeia:="33,333.33"
 $num:=Num($umaCadeia)
  ` by default, $num é igual a 33,33333 em um sistema francês
 $num:=Num($umaCadeia;".")
  ` $num será avaliada corretamente sem importar o sistema;
  ` por exemplo, 33 333,33 em um sistema francês



Ver também 

GET SYSTEM FORMAT
Operadores de Cadeia
Operadores Lógicos
String

 
PROPRIEDADES 

Produto: 4D
Tema: String
Número 11

This command can be run in preemptive processes

 
HISTÓRIA 

Modificado: 4D v11 SQL

 
ARTICLE USAGE

Manual de linguagem 4D ( 4D v16)
Manual de linguagem 4D ( 4D v16.1)
Manual de linguagem 4D ( 4D v16.2)
Manual de linguagem 4D ( 4D v16.3)