Jump to content


Photo

Ajuda Com Soma De Variaveis


  • Faça o login para participar
9 replies to this topic

#1 portalwebmaster

portalwebmaster

    kd as minas???

  • Usuários
  • 137 posts
  • Sexo:Não informado
  • Localidade:São Paulo - SP

Posted 11/08/2004, 15:12

Ai galera um probleminha bem simples que espero que possam me ajudar.

No código abaixo que fiz acontece o seguint quero somar valores do tipo dinheiro.

Ex:

quero somar 40,00 + 10,90 o resultado deveria ser 50,90, no entanto não consigo fazer isto pois do modo que fiz o resultado sempre retorna 50 apenas em vez de retornar 50,90

Será que alguem pode me ensinar alguma forma de somar estas variaveis sem ele despresar os valores após a virgula?

veja um exemplo do que criei e da este pequeno "erro"

<?php
$a = "40,00";
$b = "10,90";
$c = $a + $b;
echo "$c";
?>

Obrigado!!!

#2 fly2k

fly2k

    Super Veterano

  • Usuários
  • 2262 posts
  • Sexo:Não informado

Posted 11/08/2004, 15:16

Isto se deve porque separação de casas decimais é feita por ponto e não por vírgula.
<?php
$a = "40.00";
$b = "10.90";
$c = $a + $b;
echo "$c";
?>

Quer aprender PHP? -> www.manjaphp.com.br
Tutoriais, código colaborativo (pastebin), curso de PHP, artigos e etc.

#3 Towd

Towd
  • Visitantes

Posted 11/08/2004, 15:17

bom cara acho que se tem que substituir a , por . antes de somar e depois substituir de novo pra mostrar

tipo assim
<?php
$a = str_replace(",",".","40,00");
$b = str_replace(",",".","10,90");
$c = $a + $b;
$c= str_replace(".",",",$c);
echo "$c";
?>


#4 portalwebmaster

portalwebmaster

    kd as minas???

  • Usuários
  • 137 posts
  • Sexo:Não informado
  • Localidade:São Paulo - SP

Posted 11/08/2004, 15:21

Ai Towd primeiro obrigado por me ajudar, mais tem um problema tentei isso ai que você falou e ainda da erro ele melhorou um poco, ele retorna agora assim

50,9

alguem tem a solução para isto?

#5 portalwebmaster

portalwebmaster

    kd as minas???

  • Usuários
  • 137 posts
  • Sexo:Não informado
  • Localidade:São Paulo - SP

Posted 11/08/2004, 15:29

Isto se deve porque separação de casas decimais é feita por ponto e não por vírgula.

<?php
$a = "40.00";
$b = "10.90";
$c = $a + $b;
echo "$c";
?>

sim mais o problema é o seguinte.

eu não posso dar o valor em 50.90, pois ele vai ser uma variavel para a geração de um boleto bancario e o sistema do boleto exigige que os decimais sejams eparados por virgula, pois se eu fizer com ponto o valor do documento no codigo de barras em vez de ficar

50,90 vai ficar apenas 0,05 compreende?

Se não houver uma forma de somar assim deve existir uma forma de substituir o ponto por uma virgula depois de somado, ai eu agradeceria se você souber e puder me informar como fazer.

Abraços,
Leonardo

#6 Balala

Balala

    What you want for yourself?

  • Ex-Admins
  • 3357 posts
  • Sexo:Não informado
  • Localidade:Jaraguá do Sul - SC
  • Interesses:http://forum.wmonline.com.br/index.php?showtopic=5792

Posted 11/08/2004, 15:34

Dessa forma, com a função number_format:

PHP
<?php

$a
= "40.00";
$b = "10.90";
$c = $a + $b;
echo
number_format($c, 2, ",", "."); // primeiro você passa o valor, depois a quantidade de casas decimais, após isso o separador de décimos, e por ultimo o separador de milhar 1.000,00

?>

Balala - Admin Geral Webfórum - Retired
Twitter
Stop Spreading Lies!
Posted Image

#7 Towd

Towd
  • Visitantes

Posted 11/08/2004, 15:35

bom cara olha eu faria assim pra resolver aquele problema

<?php
$a = str_replace(",",".","40,00");
$b = str_replace(",",".","10,90");
$c = $a + $b;
$cd=explode(".",$c)

if (empty($cd)) {
$c=$c.".00";
}
elseif (strlen($cd) < "2") {
$c=$c."0";
}

$c= str_replace(".",",",$c);
echo "$c";
?>

isso deve resolver o problema... se der erro posta ai oks... eu testei aqui e funfo

#8 portalwebmaster

portalwebmaster

    kd as minas???

  • Usuários
  • 137 posts
  • Sexo:Não informado
  • Localidade:São Paulo - SP

Posted 11/08/2004, 15:43

Dessa forma, com a função number_format:

PHP
<?php

$a
= "40.00";
$b = "10.90";
$c = $a + $b;
echo
number_format($c, 2, ",", "."); // primeiro você passa o valor, depois a quantidade de casas decimais, após isso o separador de décimos, e por ultimo o separador de milhar 1.000,00

?>

Olá,

muito obrigado desta forma que você fez resolveu em parte meu problema e ja da pra mim trabalhar agora o restante eu sei fazer, só tava quebrandoa cabeça com isso, muito obrigado precisando de algo qyue eu possa ajudar estou por aki.

towd obrigado pela intenção tbm, ah e pra não esquecer esta ultima solução que você deu ele da erro na interpretação dophp aparir da linha com o if

t+

#9 Balala

Balala

    What you want for yourself?

  • Ex-Admins
  • 3357 posts
  • Sexo:Não informado
  • Localidade:Jaraguá do Sul - SC
  • Interesses:http://forum.wmonline.com.br/index.php?showtopic=5792

Posted 11/08/2004, 15:58

O erro é porque ele esquece de um ponto e vírgula na linha anterior ;)

$cd=explode(".",$c);


Balala - Admin Geral Webfórum - Retired
Twitter
Stop Spreading Lies!
Posted Image

#10 Vip76Reis

Vip76Reis

    Novato no fórum

  • Usuários
  • 3 posts
  • Sexo:Não informado

Posted 29/07/2008, 11:55

Respondendo ao tópico de abertura use o number_format:

<?php
$ax = str_replace(",",".","40,00");
$bx = str_replace(",",".","10,90");
$cx = $ax + $bx;
$cd=explode(".",$cx);
if (empty($cd)) {$cx=$cx.".00";
}
elseif (strlen($cd) < "2") {$cx=$cx."0";
}
$c= str_replace(".",",",$cx);

echo number_format($cx, 2, ",", ".");
?>

Como foi a muito tempo a abertura deste tópico, espero q a dica ajude aos futuros visitantes!
Vip76Reis
http://www.ccrstudioweb.com
Construindo Conceitos Reais




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq