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
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas