Árvore de páginas

Esta função permite criar um decimal com valor inicial, precisão e escala especificados. A precisão indica a quantidade total de dígitos do número, e a escala indica a quantidade reservada para as casas decimais do número. 

Sintaxe

DEC_CREATE( < xValue >, < iPrecision >, < iScale > )

Parâmetros

Nome

Tipo

Descrição

Obrigatório

Referência

xValue

qualquer

Indica o valor inicial do decimal. Somente caractere ou numérico.

X


iPrecision

numérico

Indica a precisão do decimal. O valor deve ser maior que zero e menor que 64.

X


iScale

numérico

Indica a escala do decimal. Valor deve ser maior ou igual a zero e menor que o parâmetro <iPrecision>.

X


Retorno

Nome

Tipo

Descrição

dRet

decimal de ponto fixo

Retorna o novo decimal criado.

Observações

  • Para utilizar qualquer cálculo aritmético com decimal de ponto fixo, é necessário criar primeiro o número decimal. Para isso, o parâmetro <xValue> deve ser do tipo caracter ou numérico. Porém, ser for passado qualquer outro tipo de dado não listado, a função lançará uma exceção para interromper a execução.
  • Se o parâmetro <xValue> for do tipo de dado caracter e o conteúdo da string não for um decimal válido, o decimal será criado e seu valor inicial será igual a 0.
  • Caso o valor passado nos parâmetros <iPrecision> e <iScale> contenham parte decimal, estes serão desconsiderados.
  • A criação de um valor com precisão em decimal de ponto fixo, quando informamos um número como parâmetro (e não uma string), está sujeito ao limite de precisão numérica pré-existente neste número. O número informado é interpretado pelo compilador como uma constante numérica, sujeita ao desvio de precisão decimal de ponto flutuante da linguagem AdvPL. Ao criarmos um número decimal de ponto fixo a partir desta constante compilada e tratada como um número na linguagem AdvPL, vamos obter um valor onde houve arredondamento na 15ª casa decimal. Para o decimal de ponto fixo ser criado corretamente a partir de um número constante, deve-se colocá-lo entre ASPAS, para a string representativa do número gerar o valor em memória.
  • Em builds superiores a 7.00.131227A, essa função sempre irá criar um número decimal, mesmo que este estoure a precisão definida (por iPrecision e iScale). Nessa situação, uma mensagem de atenção será impressa no console.

Exemplos

Exemplo 1
User Function Exemplo()
  Local dec1
  Local dec2
  dec1 := DEC_CREATE( "5.7591111111111119", 21, 20 ) // Constante entre aspas
  dec2 := DEC_CREATE( 5.7591111111111119, 21, 20 )
Return

Abrangência

Protheus 10, TOTVS Application Server 10, ByYou Application Server

Veja também


  • Sem rótulos