Arredondamento
Abrangência
Versão 5.07 | Versão 5.08 | Versão 6.09 | Versão 7.10 | Versão 8.11 |
Versões Anteriores |
No Protheus, pode haver diferença de arredondamento em algumas operações numéricas. Isso ocorre devido a diferenças no armazenamento de variáveis numéricas nos diversos processadores. Diferença esta, inclusive, presente no Advpl, mesmo antes do surgimento do Protheus.
Para evitar esses problemas de arredondamento, utilize a função 'Round', principalmente antes de realizar uma comparação, e antes de utilizar a função 'Int'. Desse modo, assegura-se que o resultado será correto independentemente do processador / plataforma.
Exemplos:
1. If (Valor/30) = 50 // pode ser falso ou inválido
If Round(Valor/30, 0) = 50 // correto
2. M->EE8_QTDEM1:= Int (M->EE8_SLDINI/M->EE8_QE) // pode ser falso ou inválido
M->EE8_QTDEM1:= Int (Round(M->EE8_SLDINI/M->EE8_QE, 10)) // correto