Converte uma sequência de caracteres que contêm dígitos em um valor numérico.

Sintaxe

Val( < cString > )

Parâmetros

Nome

Tipo

Descrição

Obrigatório

Referência

cString

caractere

Indica uma string que contém uma sequência de números a serem convertidos.

X

 

Retorno

Nome

Tipo

Descrição

nRet

numérico

Retorna um valor numérico.

Observações

A string informada será analisada da esquerda para a direita, até o final da string ou até ser encontrado um caractere não numérico. Caso a string seja iniciada com um ou mais espaços em branco, estes serão ignorados até que seja encontrado o primeiro caractere significativo (não-espaço).

O primeiro caractere significativo pode ser um sinal de "+", ou um sinal de "-", para indicar respectivamente um número positivo ou negativo, ou qualquer dígito numérico. A partir do primeiro caractere significativo encontrado, são considerados significativos e válidos apenas os dígitos numéricos ou um "." (ponto), considerado como separador decimal.

Uma vez encontrado um separador decimal, são considerados válidos apenas dígitos numéricos. Caso seja encontrado qualquer caractere inválido ou fora de contexto da string durante a análise, a mesma é finalizada, sendo considerado o valor apurado até aquele momento.

Exemplos

Exemplo 1
#DEFINE CRLF Chr(13)+Chr(10)
User Function val1()
  Local cMensagem := ""
  
  //+----------------------------------------------------------------------------+
  //|Exemplifica o uso da função Val                                             |
  //+----------------------------------------------------------------------------+  
  
  cMensagem += Str( Val( "-536870912.72057594037927936" ) ) + CRLF  
  cMensagem += Str( Val(                           "-2" ) ) + CRLF  
  cMensagem += Str( Val(               "0.137438953472" ) ) + CRLF  
  cMensagem += Str( Val(                 "512.67108864" ) ) + CRLF  
  cMensagem += Str( Val(                "+2048.1048576" ) )
  
  //+----------------------------------------------------------------------------+
  //|Apresenta uma mensagem com os resultados obtidos                            |
  //+----------------------------------------------------------------------------+
Return MsgInfo( cMensagem, "Exemplo do Val" )

Resultado do Exemplo

Abrangência

Microsiga Protheus 8.11, Protheus 10, TOTVS Application Server 10, ByYou Application Server

Veja também

  • Sem rótulos