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

Multiplicação De Decimal


Norivan Oliveira

Pergunta

Olá galera estou tendo um grande problema em fazer calculos com numeros decimais, eu preciso desenvolver um relatorio financeiro, quando tento fazer um calculo tipo 2,50 * 2 o resultado da 4

Já tentei fazer também 2,50 * 2,00 e tb deu 4

Alguém pode me explicar como fazer este calculo ou postar um exemplo?

Desde já obrigado ;)

<?
$y = "2,50";
$x = "2,00";
$resultado = $y * $x;

echo $resultado;

?>

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

8 respostass a esta questão

Posts Recomendados

  • 0

Por padrão, o PHP interpreta como separador de casas decimais o ponto.

Você pode utilizar o SET_LOCALE para definir sua região e ele passar a interpretar a vírgula.

Mais informações sobre a SET_LOCALE podem ser encontradas em:

http://www.php.net/manual/pt_BR/function.setlocale.php

Link para o comentário
Compartilhar em outros sites

  • 0

Cara não deu pra entender, não teem um exemplo pratico no manual o exemplo do manual é

/* Define o local para Holandês(usar pt_BR para o Português(Brasil) ) */

setlocale (LC_ALL, 'nl_NL');

coloquei no meu codigo

<?
setlocale (LC_ALL, 'pt_BR');

$y = "2,50";
$x = "2,00";
$resultado = $y * $x;

echo $resultado;

?>

Mas continuou dando 4....

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

  • 0

Como eu lhe disse no seu outro tópico, ele só reconhece o que está até a vírgula, para falar a verdade ainda não entendi porque você quer utilizar a vírgula, já que isso só prejudica o próprio desenvolvimento, posto que, por exemplo, você nunca (pelo menos até hoje) vai poder armazenar um número com vírgula em um BD MySQL(a menos que você use um campo varchar...)...

Link para o comentário
Compartilhar em outros sites

  • 0

Eu fiz um negócio parecido em C a poucos dias...

http://scriptbrasil.com.br/forum/index.php?showtopic=108125

Usa essa lógica.

Pega o que tem antes e depois da vírgula (usa um explode(',',$variavel))

Aí conta quantos caracteres tem depois da vírgula, e divide o que tem depois da vírgula pela potência de 10 elevado a quantos caracteres tem depois da vírgula.

Soma isso aí a o que tem antes da vírgula.

Pronto! uma gambiarra medonha que deve funcionar.

Link para o comentário
Compartilhar em outros sites

  • 0
Como eu lhe disse no seu outro tópico, ele só reconhece o que está até a vírgula, para falar a verdade ainda não entendi porque você quer utilizar a vírgula, já que isso só prejudica o próprio desenvolvimento, posto que, por exemplo, você nunca (pelo menos até hoje) vai poder armazenar um número com vírgula em um BD MySQL(a menos que você use um campo varchar...)...

Cara não sei o que aconteceu mas, no dia que você respondeu aqueele outro tópico quando fui procurar ele ele tinha sumido, pensei que eu tinha digitado e não tinha enviado. Só fui ver ele agora que você se referiu a ele e dai fiz uma busca mais detalhada.

Obrigado pela paciência galera... e ESerra desculpe não ter visto sua resposta do outro tópico antes, sinceramente eu tinha procurado por ele e não tinha encontrado... como postei quando estava na correria pra sair do trampo achei que o post não tinha ido, ou eu tinha digitado e não clicado em enviar.... foi mal ^_^

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

  • 0

bom dia pessoal...

como o outro tópico não está respondido, e não é você (o programador) que diz quais vão ser os valores que serão multiplicados... fica difícil dizer para um brasileiro mesmo que ele no meu site tem que usar ponto e não vírgula. Segue abaixo uma das implementações possíveis para resolver isso.

Fiz agora meio na pressa, tenho certeza que da para melhorar um bocado, fazer uma função para tratar esses valores.

Espero que ajude.

<?php
// tem que pegar o valor como se fosse string
$v1 = "2,5";
$v2 = "2,895";

//$res = $v1 * $v2;

//echo($res); // vai multiplicar apenas 2 com 2

// como resolver
$valV1 = explode(',',$v1);
$valV2 = explode(',',$v2);

$qts1 = strlen($valV1[1]);
$qts2 = strlen($valV2[1]);

$seg1 = pow(10,$qts1);
$seg2 = pow(10,$qts2);

$v1 = ($valV1[0] + ($valV1[1]/$seg1));

$v2 = ($valV2[0] + ($valV2[1]/$seg2));

$res = $v1 * $v2;

echo($res); // agora da certo
?>

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
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...