Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Dogs

[Resolvido] Erro PHP subtração

Recommended Posts

Olá pessoal,

 

Esstou com um código que não consigo resolver de forma nenhuma, é simples mas não acho uma solução, bem vamos lá, espero que alguem saiba resolver?

 

Tenho um campo que deve imprimir na tela o resultado de outros dois campos exemplo: temos 100-70=30 (preciso que imprima na tela somente o resultado do cálculo que é 30)

 

Preciso que o Campo2 subtraia do Campo1 imprimindo na tela o resultado da subtração no campo3 porem está acontecendo isso.

 

Errado atual.

Exemplo1

campo1 = 1.570,30

campo2 = 3.892,90

campo3 = 3.892,90 - 1570,30 (isso é o que esta imprimindo hoje)

 

O código que esta gerando o resultado no campo3 é : ${moneyit3($team['market_price'])}-${moneyit3($team['team_price'])}

 

Exemplo2 -> deve ficar assim

Campo1 = 1.570,30

campo2 = 3.892,90

campo3 = 2.322,60 (deve somente imprimir o resultado dos campos "Campo2 -(menos) Campo1" que é 2.322,60.)

 

alguém sabe resolver isso!?

no aguardo

abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já montei/tentei anteriormente este aqui mas não resolveu.

 

float ${moneyit3($team['market_price'])})-(${moneyit3($team['team_price']) }

 

Poderia escrever o código correto para que eu teste pois não estou conseguindo!?

 

valeu abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use strreplace para retirar o o ponto

Use strreplace para substituir a virgula por um ponto

Use a função floatval para converter para ponto flutuante

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou começando agora, não entendi o que você comentou. Se for possivel postar o codigo todo eu agradeço.

 

obrigado

abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então... o PHP é tipagem dinâmica, ou seja, você não precisa declarar o tipo de sua variável porque ele converte tudo automaticamente, mas é preciso tomar cuidado ao usar strings como se fossem números. O problema que está ocorrendo aí é que o PHP não está convertendo da maneira que você quer.

 

Exemplo:

Você precisa, para poder calcular esses valores, converter "1.570,30" para 1570.3, por exemplo. Se você dar isso diretamente para o PHP ele não irá converter corretamente:

echo (int) "1.570,30"; // retorna 1
echo (float) "1.570,30" // retorna 1.57

 

Como você pode ver ele ignora o que vier depois da vírgula e também os últimos zeros que virem antes da vírgula.

 

Então você deve converter esse valor "1.570,30" para "1570.3" (obs: continua como string). Usando a função str_replace para retirar o ponto e para substituir a virgula por um ponto formando então a representação de um número ponto flutuante:

 

$val = str_replace(".", "", "1.570,30"); // retirar o ponto
$val = str_replace(",", ".", $val); // substituir ',' por '.'

echo (float) $val; // imprime 1570.3

 

 

Entendeu?

 

Faça isso com os dois valores monetários (string) que você tem antes de fazer a subtração.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi muito bem não. rsrs

 

Os outros valores "campo1 e campo2" já imprime corretamente 1.570,30 com "," tudo certinho, com os segintes codigos e nada mais :

 

campo1: ${moneyit3($team['team_price'])}

 

campo2: ${moneyit3($team['market_price'])}

 

campo3: Preciso que imprima o "campo2 menos o campo1"

 

no aguardo

obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

esta funcção muda . por , ( sem o moneyit3 imprime 300.00 com moneyit3 imprime 300,00)

 

 

 

campo1: ${moneyit3($team['team_price'])} (valor com desconto para)

 

campo2: ${moneyit3($team['market_price'])} (valor cheio)

 

campo3: ${moneyit3($discount_price)} "esse era o código original, mas imprimia o valor Zero"

 

(O campo3 tem que ser a diferença entre o "valor cheio" e o "valor com desconto"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pois é, mas não estou conseguindo.

 

gostaria que alguem escrevesse o código para eu ver se da certo, pois nada que fiz deu certo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente assim:

echo ((float) $team['market_price']) - ((float) $team['team_price']);

 

Se não der certo... é o jeito:

$campo1 = moneyit3($team['market_price']);
$campo2 = moneyit3($team['team_price']);

$campo1 = str_replace(".", "", $campo1);
$campo1 = str_replace(",", ".", $campo1);
$campo2 = str_replace(".", "", $campo2);
$campo2 = str_replace(",", ".", $campo2);

echo ( (float) $campo1 - (float) $campo2 );

Compartilhar este post


Link para o post
Compartilhar em outros sites

so com sujestao,

pra valor monetario eu costumo usar

number_format($campo1,2,",","")

tente fazer

echo number_format($campo1 - $campo2,2,",","")

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.