Jump to content


Photo

Script Não Soma Casa Decimais ...


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

#1 Hospedar-se .Com

Hospedar-se .Com

    Super Veterano

  • Usuários
  • 1500 posts
  • Sexo:Masculino
  • Localidade:São Paulo - SP

Posted 12/03/2006, 04:27

Está meio louco o meu script, uma conta simples dessa R$ 1.95 + R$ 13.00 = "R$14.00" ele fala que é isso o resultado ...


Pedaço do código:


$pago="0.00";

#### Carrega o Saldo disponível
$dbh = DBI->connect("DBI:mysql:$database:$host","$username","$password");
$sth=$dbh->prepare("SELECT controle,valor,status,favorecido FROM parc_saque WHERE id='$id1' LIMIT 5");
$sth->execute;

while(@ultimas=$sth->fetchrow_array){
($tid,$valor,$situacao,$favorecido) = (@ultimas);

$pago=$valor + $pago;
}

print "$pago";



Alguem tem uma solução pra ele mostrar o valor certo? (R$ 14,95)

#2 Hospedar-se .Com

Hospedar-se .Com

    Super Veterano

  • Usuários
  • 1500 posts
  • Sexo:Masculino
  • Localidade:São Paulo - SP

Posted 12/03/2006, 15:27

Deixa pra la, já consegui arrumar

Fiz outro esquema

Converti para número inteiro ( $total =~ s/\.//ig; ) e depois somei ( $total=$total+$valor; ), o resultado dividi por 100 ($total=$total/100;), depois tive que formatar o valor total pra mostrar corretamente as casas decimais

tipo: TOTAL = 15000 / 100 = R$ 150,00

#3 Gabriel

Gabriel

    CGI & PHP até Morre!!!!

  • Usuários
  • 573 posts
  • Sexo:Não informado
  • Localidade:Santo Andre-SP
  • Interesses:http://www.divulgue-me.com

Posted 13/03/2006, 07:09

tem um jeito usando o sprint, mais nao to lembrando direito da função
mais deve ser algo assim
$var = sprint(0.2d,($valor+$valor2));

ele pega o valor, ja soma e ajusta as casas decimais
mais toma cuidado nas somas com o perl
pois ele so entende que a variavel é valor em $$ se tiver em "." (ponto) se for ",")(virgula) ele nao entende, então é bom sempre da um $valor =~s/,/./ig; no valor antes da soma
ok
abraços
Editado pela equipe Forum Wmo, favor ler as regras.

#4 prix

prix

    Duracell: E Duram, Duram, Duram...

  • Usuários
  • 562 posts
  • Sexo:Não informado
  • Interesses:keep walking ...
    jonny walker

Posted 13/03/2006, 13:02

esse aqui entende:
$preco = '13.00';
$total = '1.20';
$total = sprintf("%.2f",($total + $preco));

e vc pode calcurar quantidades tambem...

$total = sprintf("%.2f",($preco_produto * $quantidade_produto));

Edição feita por: prix, 13/03/2006, 13:03.

print join'',(reverse  map{/d([a-z])d/}split/W/,'$5x6@314&60f%3i4#moo^1r2#moo^1p2')," ", pack ("B*",'01110000011001010111001001101100')," ", pack ("B*",'011011010110111101101110011010110110010101111001'), "n";
sleep 5;


E-Mails, topicos ou mensagens privadas não serão respondidas a menos que eu considere uma relevancia/necessidade na mesma.

#5 prix

prix

    Duracell: E Duram, Duram, Duram...

  • Usuários
  • 562 posts
  • Sexo:Não informado
  • Interesses:keep walking ...
    jonny walker

Posted 17/03/2006, 14:28

outros exemplos:
$inteiro = 5;
$parte = 2.5346;

sprintf("%d", $inteiro); # imprime o numero inteiro

sprintf("%03d", $inteiro); # formata o numero em 3 casas a esquerda, 005

sprintf("%2.2f", $parte); # formata o numero em 2 casas a esquerda e 2 casas a direta

sprintf("%.2f", $parte); # formata o numero em 2 casas a esquerda e deixa como esta qualquer casa acima.


print join'',(reverse  map{/d([a-z])d/}split/W/,'$5x6@314&60f%3i4#moo^1r2#moo^1p2')," ", pack ("B*",'01110000011001010111001001101100')," ", pack ("B*",'011011010110111101101110011010110110010101111001'), "n";
sleep 5;


E-Mails, topicos ou mensagens privadas não serão respondidas a menos que eu considere uma relevancia/necessidade na mesma.




1 user(s) are reading this topic

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

IPB Skin By Virteq