Dogs 0 Denunciar post Postado Abril 20, 2011 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
Leozitho 81 Denunciar post Postado Abril 20, 2011 Para trabalhar com valores monetários eles devem ser do tipo float. Exemplo: $subtracao = 3892.90 - 1570.30; echo $subtracao; Compartilhar este post Link para o post Compartilhar em outros sites
Dogs 0 Denunciar post Postado Abril 20, 2011 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
mangakah 217 Denunciar post Postado Abril 20, 2011 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
Dogs 0 Denunciar post Postado Abril 20, 2011 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
mangakah 217 Denunciar post Postado Abril 20, 2011 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
Dogs 0 Denunciar post Postado Abril 20, 2011 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
mangakah 217 Denunciar post Postado Abril 20, 2011 O que faz essa função moneyit3? Como ficam os valores sem ela? Imprima e poste aqui. Compartilhar este post Link para o post Compartilhar em outros sites
Dogs 0 Denunciar post Postado Abril 20, 2011 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
mangakah 217 Denunciar post Postado Abril 20, 2011 Pois então... subtraia sem usar essa função. Compartilhar este post Link para o post Compartilhar em outros sites
Dogs 0 Denunciar post Postado Abril 20, 2011 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
mangakah 217 Denunciar post Postado Abril 20, 2011 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
jpraminelli 3 Denunciar post Postado Abril 20, 2011 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
Dogs 0 Denunciar post Postado Abril 23, 2011 Valeu Pessoal, um colega resolveu a questão. Adm pode fechar o tópico. abraços Compartilhar este post Link para o post Compartilhar em outros sites