Erro "Attempt to divide an integral or decimal value by zero in function 'div'"
O divisor da conta era zero. As funções div e mod não devolvem infinito nem vazio: o fluxo para com InvalidTemplate. A mensagem vale para as duas funções, e só muda o nome entre aspas simples no final.
A mensagem completa
Attempt to divide an integral or decimal value by zero in function 'div'.
No histórico de execuções, essa mensagem aparece dentro de uma frase maior: Unable to process template language expressions in action 'NOME_DA_ACAO' inputs at line '0' and column '0': '...'. O nome da ação é o da ação que contém a expressão e muda de fluxo para fluxo. O trecho em destaque acima é o que identifica o problema.
O que significa
O divisor da conta era zero. As funções div e mod não devolvem infinito nem vazio: o fluxo para com InvalidTemplate. A mensagem vale para as duas funções, e só muda o nome entre aspas simples no final.
Causas mais comuns
- O divisor vem de um campo que pode ser zero, como a quantidade de parcelas ou de itens.
- O campo está vazio e foi convertido para 0 sem querer.
- Uma média ou um percentual é calculado sobre uma lista que ficou vazia (length igual a 0).
Como corrigir
- Antes da conta, compare o divisor com zero: if(equals(divisor,0), 0, div(valor,divisor)).
- Escolha o valor que faz sentido para o seu caso quando o divisor é zero (0, vazio ou um aviso), em vez de deixar o fluxo falhar.
- Em listas, verifique length(lista) antes de calcular médias.
- Se o divisor vem de outro cálculo, confira por que ele ficou zerado.
Exemplo: antes e depois
| Expressão | Resultado no Power Automate |
|---|---|
div(1,0) | Erro. Attempt to divide an integral or decimal value by zero in function 'div'. |
if(equals(0,0),0,div(1,0)) | 0 |
Os dois resultados vêm da execução real de 09/11/2026, e um teste automático do Me Ajuda Flow confere que o texto desta página é idêntico ao registrado.
Como evitar que o erro volte
- Veja o valor real: abra a execução e confira a entrada da ação que falhou, não só a expressão.
- Trate vazio e tipo antes de calcular: use
coalescepara vazio eintoufloatpara texto que parece número. - Confira a expressão antes de rodar: o analisador de fluxo e o verificador de expressões apontam parte desses problemas sem executar o fluxo.
Perguntas frequentes
O if calcula o ramo que não é escolhido?
No teste real, if(equals(0,0),0,div(1,0)) devolveu 0 sem erro, então o ramo da divisão não foi calculado quando a condição escolheu o outro.
div(75,200) dá 0.375?
Não. Com inteiros, div devolve um inteiro, então div(75,200) é 0. Para obter o decimal, converta um dos lados com float.