Jump to content
Fórum Script Brasil
  • 0

Multiplicar Valor Armazenado Na Sessão


Gutto
 Share

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?

Link to comment
Share on other sites

10 answers to this question

Recommended Posts

  • 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 to comment
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
Link to comment
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
Link to comment
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 />"; 
 ?>

Link to comment
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 />";
?>

Link to comment
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é

Link to comment
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.

 Share



  • Forum Statistics

    • Total Topics
      151k
    • Total Posts
      649k
×
×
  • Create New...