• 0
Sign in to follow this  
Gutto

Multiplicar Valor Armazenado Na Sessão

Question

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?

Share this post


Link to post
Share on other sites

10 answers to this question

Recommended Posts

  • 0

O divisor de parte inteira e decimal deve ser o ponto, não a vírgula. ;)

Depois de realizar as operações, você pode usar number_format() para exibir o número da forma adequada.

[]'s

Share this post


Link to post
Share on other sites
  • 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....

Share this post


Link to post
Share on other sites
  • 0

O PHP não fará operações se houver uma vírgula no número. Só deve existir ponto.

Poste seu código se não conseguir resolver.

[]'s

Share this post


Link to post
Share on other 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?

Edited by Gutto

Share this post


Link to post
Share on other 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: [email protected]
*/

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é

Edited by ard-webmaster

Share this post


Link to post
Share on other sites
  • 0

Eu ainda acho bem mais fácil e correto apenas mudar esta linha:

$a = "1.845,12";
por esta:
$a = 1845.12;

;)

[]'s

Share this post


Link to post
Share on other 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 />"; 
 ?>

Share this post


Link to post
Share on other 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 />";
?>

Share this post


Link to post
Share on other 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é

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this