Jump to content
patriciahelena

[Resolvido] Calculo com casas decimais

Recommended Posts

Olá pessoal,

Não sou programadora, mas faça algumas coisinhas. Preciso de ajuda:

A formulá abaixo precisa retornar o valor 0,642047

var = 0.01*65*(10^(((0.000007047*65)+0.01392)*35+((0.0002311*65)-0.5236)));

Mas está retornando 6.5

 

Eu não faço ideia porque. Poderiam me ajudar!

Obrigada

 

Share this post


Link to post
Share on other sites

No PHP, a operação exponencial é representada com "**" e não "^".

 

Então basta substituir pela representação correta, ficará assim:

 

Citar

0.01*65*(10**(((0.000007047*65)+0.01392)*35+((0.0002311*65)-0.5236)));

Share this post


Link to post
Share on other sites

O @navegantenarede já solucionou o problema, mas apenas para complementar, deixo a sugestão de uso da biblioteca BC Math para evitar erros por imprecisão do float.

 

Eis um exemplo:

<?php
bcscale( 50 );

$var1 = bcmul( bcadd( bcmul( '0.000007047', '65' ), '0.01392' ), '35' );

$var2 = bcsub( bcmul( '0.0002311', '65' ), '0.5236' );

$var = bcadd( $var1, $var2 );

$var = bcmul( '0.01', bcmul( '65', '10' ** $var ) );

echo $var;// 0.64204694174260250000000000000000000000000000000000

 

Veja:

https://pt.stackoverflow.com/questions/5642/resultado-impreciso-em-cálculo-com-números-quebrados

https://ericlemes.com/2013/08/12/float/

https://medium.com/@rdlagemann/a-imprecisão-dos-números-b1d922500e0b

https://pt.wikipedia.org/wiki/Vírgula_flutuante

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By joeliton.lima
      Bom dia galera.
      Sou novo no fórum, e estou uma dúvida, estou com um formulário de cálculo de cubagem, e queria saber como eu posso fazer para que o meu resultado que fica coluna "Cubagem" fique arrendado para 2 casas decimais, pois no modo que eu fiz quando eu tento por um número fracionado ele mostra mais de duas casas.
      Oque eu queria era o seguinte, ao digitar por exemplo os valores:
      Quantidade de volumes - 2
      Altura - 2.22
      Largura - 2.22
      Profundidade - 2.22
      E a ideia é que mostre em Cubagem um valor de "21.88" ou invés de "21.882096000000004".
      Alguém consegue ajudar?
      Abaixo seguem os códigos:
       
      <script> function calcular() { calc.CUBAGEM1.value = (calc.ALTURA1.value*1) * (calc.LARGURA1.value*1) * (calc.PROFUNDIDADE1.value*1) * (calc.QUANTVOL1.value*1) + " M³"; } </script> <form name="calc"> <table border="1"> <tr> <td><input name="QUANTVOL1" id="QUANTVOL1" value="" onkeyup="calcular()"/> </td> <td><input name="ALUTRA1" id="ALTURA1" value="" onkeyup="calcular()"/> </td> <td><input name="LARGURA1" id="LARGURA1" value="" onkeyup="calcular()"/> </td> <td><input name="PROFUNDIDADE1" id="PROFUNDIDADE1" value="" onkeyup="calcular()"/> </td> <td><input name="CUBAGEM1" readonly="readonly" id="CUBAGEM1"> </td> </tr> </table> </form>
    • By Gurandao
      Olá galera, preciso criar um cálculo de correção monetária, já criei a tabela com todos os índices e fatores baseados no site https://api.tjsp.jus.br (Abril/2017).
      Vamos ao que interessa:
      Puxei os valores da tabela, a fórmula do cálculo é: Valor  (dividido) pelo fator do mes que venceu (multiplicado) pelo ultimo indice cadastrado (mes anterior).
      Então temos os valores: Valor (270.72), fator do mês que venceu (48.485963) e fator do mês anterior atual (66.839575).
      Eu criei o seguinte cálculo:
      $correcao =$valor / $fator_vcto * $fator_atual;
      ou seja:
      $correcao = 270.72 / 48.485963 * 66.839575;
      O resultado que ele me apresenta é 276.699454107990 sendo que na calculadora e no excel o valor correto calculado é 373.1968723
       
      Desde já agradeço à todos que puderem me ajudar!
       
    • By Nightmare SEP
      Bom dia,
       
      Estou a procura, mas ainda não encontrei nada.
      Preciso arredondar apenas as casas decimais (de dois dígitos) para cima.
       
      Exemplo:
      de 1.25 arredondar para 1.30
      de 0.87 arredondar para 0.90
       
      Como faço isso?
       
      Obrigado
    • By sergionpinheiro
      Fala galera, estou com o seguinte problema.

      Tenho um código que faz uma consulta em uma determinada tabela, carrega esses dados e insere em outra. Até aí blz, o problema é que tem um campo chamado qtd e, quando ele está com mais de uma casa decimal, o código só insere uma casa. Tipo: consulta retornou 20 e na hora de inserir só insere 2. Alguém sabe dizer pq? Segue parte do código:

      while ($row_pacotes = mysql_fetch_assoc($qr_pacotes)) { $estoque = $row_pacotes['estoque']; $produto = $row_pacotes['produto']; $qtd_pro = $row_pacotes['qtd']; $values = array(); for($i = 0; $i < sizeof($qtd_pro); $i++) { $values[] = "('{$estoque}','{$produto[$i]}','{$qtd_pro[$i]}')"; } $insert_produto = 'INSERT INTO tb_produtos(estoque, produto, qtd)VALUES '.implode(',', $values); $qr_insert_produto = mysql_query($insert_produto) or die(mysql_error()); } {$estoque} está sem o [$i], pois o valor é igual para todos os registros inseridos. PS.: O banco de dados está configurado para tinyint, ou seja, 4 casas Valeu
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.