Formulario com calculo errado

Boa Noite a todos,

Tenho uma aplicação formulário com grid editável, que está apresentando resultados com erro em alguns registros.
É o seguinte:

Tenho uma tabela de nome Empenhos com os campos:
Empenho, Data, RsEmpenho, RsAlteracoes, RsExecutado
Criei uma variável RsSaldo e no eventos onLoadRecord e ajax coloquei:

{RsSaldo} = {RsEmpenho} + {RsAlteracoes} - {RsExecutado};

No formulário aparece assim:

Empenho Data RsEmpenho RsAlteracoes RsExecutado RsSaldo
000133/2018 19/04/2018 24.024,31 -10.618,71 13.405,60 1,81

O correto seria:
Empenho Data RsEmpenho RsAlteracoes RsExecutado RsSaldo
000133/2018 19/04/2018 24.024,31 -10.618,71 13.405,60 0.00

O RsSaldo era para ser zerado e, no entanto está aparecendo valor 1,81 que não está correto.

Isto está acontecendo em alguns registros e não estou conseguindo zerar o RsSaldo.

Tudo muito simples, fiz tudo direitinho, a fórmula está correta porém, alguns registros está calculando correto o valor do RsSaldo e outros não.

Gostaria de contar com a ajuda de vocês.
Muito obrigado.

Ainda bem que você testou, e viu o erro imagina se já tivesse colocado em produção e o cliente usando.

Para resolver só fazer isso:
{RsSaldo} = round(({RsEmpenho} + {RsAlteracoes}) - {RsExecutado}, 2);

São particularidades do PHP, um cálculo simples com ponto flutuante, que daria certo no Excel em PHP, você tem que ajustar de certa forma e testar.

https://translate.google.com.br/translate?hl=pt-BR&sl=en&tl=pt&u=https%3A%2F%2Ffloating-point-gui.de%2F

Isto é explicado aqui: https://forum.scriptcase.com.br/index.php/topic,4114.msg16344.html#msg16344

Passei por problema parecido com o Elen Moreira e só.conseguimos contonar o problema transformando as variáveis em sring com o mesmo tamanho em decimais pois somas e subtrações com .50 e .5 os valores eram transformados em exponenciação.

Haroldo é isto mesmo que a BC Math faz.
Para matemática de precisão arbitrária, o PHP oferece uma calculadora binária com suporte a números de qualquer tamanho e precisão, representados como strings.
Dê uma olhada: https://forum.scriptcase.com.br/index.php/topic,4114.msg16344.html#msg16344

PS: Haroldo tem um exemplo de como fez sem a BC Math?

Também sugiro a leitura do manual do php:
http://php.net/manual/pt_BR/language.types.float.php

Eu trabalhei no código de uma app do Elen Moreira.
Vou pedir a ele para postar aqui.

Obrigado.
Precisão com PHP puro é complicado mesmo.

Desde já agradeço o empenho do Haroldo em resolver um calculo que estava saindo errado gerando valores como como exemplo -1.46464BC56.
Segue parte do código que agora esta funcionando corretamente
$valor = number_format({Contas a pagar valor pago}, 2, ‘.’, ‘’);
$total = number_format([ValorTotal], 2, ‘.’, ‘’);

if (!{check}) {
$total -= $valor;
}else{
$total += $valor ;
}

[ValorTotal] = $total;

sc_format_num($total, ‘.’, ‘,’, 2, ‘S’, ‘1’, ‘R$ ‘);
sc_ajax_javascript(‘jq_html’, array(’#id_total’,$total));

Obrigado por compartilhar Elen

Boa tarde a todos,

Fiz as alterações de acordo com as orientações do Jailton e funcionou certinho, mas as outras dicas foram bastantes esclarecedoras e aprendi muito.

Muito obrigado a todos e tenham um ótimo dia.