Permite alterar a precisão e a escala de um decimal de ponto fixo.
Sintaxe
DEC_RESIZE( < dNum >, < nPrecision >, < nScale >, [ nRound ] )
Parâmetros
Nome | Tipo | Descrição | Obrigatório | Referência |
---|---|---|---|---|
dNum | decimal de ponto fixo | Indica o número que será alterado. | X |
|
nPrecision | numérico | Indica a quantidade de dígitos do decimal. | X |
|
nScale | numérico | Indica a quantidade de casas decimais. | X |
|
nRound | numérico | Indica o tipo de arredondamento das casas decimais. |
|
|
Retorno
Nome | Tipo | Descrição |
---|---|---|
dRet | decimal de ponto fixo | Retorna o decimal modificado de acordo com os parâmetros informados. |
Observações
- <nPrecision> deve ser maior que zero e menor que 64.
- <nScale> deve ser maior ou igual a zero e menor que <nPrecision>.
Os valores válidos de <nRound> são:
Número
Exemplo
0 - Arredonda 5 para cima
Realiza o arredondamento tornando .5 em 1
1 - Arredonda 5 para baixo
Realiza o arredondamento tornando .5 em 0
2 - Dispensa casas (Truncate)
Realiza o arredondamento eliminando as casas especificadas.
- O valor padrão de <nRound> é 2.
- Caso <dNum> não seja do tipo decimal, ou <nScale> seja menor que 0 ou maior o igual à <nPrecision>, ou <nRound> seja menor que 0 ou maior que 2, uma exceção será lançada para interromper a execução.
- Até a build 7.00.131227A, caso o parâmetro <nRound> fosse especificado, o valor atribuído ao mesmo era o mesmo valor do parâmetro <nScale>, gerando comportamentos inesperados. Esse problema foi corrigido em builds superiores a 7.00.131227A.
Exemplos
User Function Exemplo() Local dec1 Local dec2 dec1 := DEC_CREATE( 5.759, 4, 3 ) // = 5.759 dec2 := DEC_RESIZE( nvar1, 3, 2 ) // = 5.75 return
Abrangência
Protheus 10, TOTVS Application Server 10, ByYou Application Server