Ir para conteúdo
Fórum Script Brasil
  • 0

Multiplicar Valor Armazenado Na Sessão


Gutto

Pergunta

Tenho a sessão:

$v = $_SESSION[conta][$indice][VALOR];

Supondo que a sessão tenha como valor 512,73, ao dar um echo ela exibe corretamente, mas se eu multiplicar, somar, qualquer operação, ela perde os centavos, arredondando o valor. (512).

Mesmo se tentar formatar o valor usando number_format($subtotal,2,',','.'); não tá dando certo.

Como multiplicar sem que esse valor seja alterado?

Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0

Se eu mudar a ordem entre a vírgula e o ponto, passa a exibir errado, fica 0,000.00, sendo que o certo é 0.000,00.

E é assim mesmo que estou fazendo, mando calcular, armazenando o valor da sessão em uma variável e depois multiplicando, em seguida quando vou exibir coloco o number_format, e n dá certo....

Link para o comentário
Compartilhar em outros sites

  • 0

Então vamos lá.

Pesquisei muito de ontem pra hj, lí sobre number_fotmat() e money_format(), mesmo assim n resolvi o problema.

Olhe script abaixo, ele não exibe o valor final corretamente, R$ 5.535,36.

<?php 
    $a = "1.845,12"; // Valor do Produto
    
    $b = "3"; // Quantidade

// Retira a vírgula do valor    
    $a = nl2br($a);
    $a  = str_replace(".","",$a);
        
// Multiplica Valor    pela Quantidade
    $c = $a * $b;
    
// Exibe o resultado
    setlocale(LC_MONETARY, 'pt_BR');
    
// Exibe 5.535,00 R$, deveria ser R$ 5.535,36
    echo money_format('%.2n', $c) . " \n<br />Exibe 5.535,00 R$, deveria ser R$ 5.535,36\n<br />"; 
?>

Qual o erro?

Editado por Gutto
Link para o comentário
Compartilhar em outros sites

  • 0

Fala Gutto,

eu já tive este mesmo problema que você e o jeito foi fazer uma pequena função... Vê se serve p/ você:

/*
#Function By: André R. Duarte
#mail: andrerayd@gmail.com
*/

function calculaMoeda($valor,$multiplicador ) {
$valor = str_replace(".","",$valor);

$t = explode(",",$valor);

$int = intval($t[0]);
$dec = intval($t[1]);

$resultInt = $multiplicador * $int;

$decCalc = $multiplicador * $dec;

if($decCalc > 99) {
$decInt = floor($decCalc / 100); 
$resultInt += $decInt;
if(($decCalc % 100) != 0){ 
$decNovo = $decCalc % 100;
$format = number_format($resultInt,0,'','.').",".$decNovo;
}
else{ $format = number_format($resultInt,0,'','.'); }
}else{
$format = number_format($resultInt,0,'','.').",".$decCalc;
}
return $format;
}

Eu não comentei o código, mas dá para você entender tranquilo.

T+

André

Editado por ard-webmaster
Link para o comentário
Compartilhar em outros sites

  • 0

Usando o script que o André passou n consegui porque nem achei aonde colocar os valores para a função trabalhar :lol:

e só mudar a linha n deu certo também Beraldo.

<?php  
    $a = "1845.12"; // Valor do Produto
    
    $b = "3"; // Quantidade

// Retira a vírgula do valor    
    $a = nl2br($a);
    $a  = str_replace(".","",$a);
    $a  = str_replace(",","",$a);
        
// Multiplica Valor    pela Quantidade
    $c = $a * $b;
    
// Exibe o valor total sem formatação
    echo $c . " // Exibe o valor total sem formatação\n<br />";
    
// Exibe o resultado
    setlocale(LC_MONETARY, 'pt_BR');
            
// Exibe 5.535,00 R$, deveria ser R$ 5.535,36
    echo money_format('%.2n', $c) . " \n<br /><br />Exibe 5.535,00 R$, deveria ser R$ 5.535,36\n<br />"; 
 ?>

Link para o comentário
Compartilhar em outros sites

  • 0

Ah, é mesmo. Trocar a linha não adianta. Precisa retirar uma parte do código:

<?php
$a = 1845.12; // Valor do Produto
    
$b = 3; // Quantidade

   
// Multiplica Valor    pela Quantidade
    $c = $a * $b;
    
// Exibe o valor total sem formatação
    echo $c . "<br />"; // Exibe o valor total sem formatação\n<br />";
    
        
// Exibe 5.535,00 R$, deveria ser R$ 5.535,36
    echo number_format($c, 2, ",", ".") . "<br /><br />";
?>

Link para o comentário
Compartilhar em outros sites

  • 0

Aeeeww Beraldo,

deu certo.

E quando esse problema apareceu pensei que iria resolver rapidão... valeu galera.

Já que essa parte do problema foi resolvida.... tem mais.. rssss

veja o uso desse script, que faz parte de um sistema de carrinho de compras.

Editado por Gutto
Link para o comentário
Compartilhar em outros sites

  • 0
Usando o script que o André passou n consegui porque nem achei aonde colocar os valores para a função trabalhar :lol:

hauahuahauh :lol:

Que bom que tu já conseguiu com a ajuda do Beraldo...

;

P/ você usar a função tabajara era só tu fazer isso

echo $resultado = calculaMoeda("1.845,12",3);

T+

André

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...