Jump to content


Photo

Floor() Arredondando Sem Necessidade


  • Faça o login para participar
2 replies to this topic

#1 boari

boari

    24 Horas

  • Usuários
  • 411 posts
  • Sexo:Masculino
  • Localidade:São joão Del Rei - Minas Gerais
  • Interesses:PHP, MySQL, SQL Server

Posted 19/03/2013, 11:24

Prezados,

fiz esquema pra pegar a porcentagem de desconto entre o preço cheio e o preço de venda. Pela necessidade do cliente deve arredondar pra baixo quando for o caso (floor()).

Usei o seguinte:

<?php echo floor((1-($valor2 / $valor1)) * 100); ?>

Sempre dava ok. Só que hoje num cálculo ele começou a arredondar pra baixo sem a necessidade pois o cálculo dá, exatamente, 66%.

Vejam:
Valor1: 175,00
Valor2: 59,50

1 - (59,50 / 175,00) * 100
1 - 0,34 * 100
0,66 * 100 = 66%

Sabem me dizer o porque a função, mesmo dando o valor certo, arredonda pra baixo?
Qual a saída?

Abraços,

#2 zerof

zerof

    Normal

  • Usuários
  • 76 posts
  • Sexo:Masculino
  • Localidade:São Paulo
  • Interesses:GEOLOCALIZAÇÃO, APACHE, PHP, MYSQL, FOTOGRAFIA, GERENCIAMENTO DE PROJETOS

Posted 19/03/2013, 14:17

Veja o porque, aqui: [MATEMÁTICA (Tradicional)]

http://ed48.com/rsr/math/

Edição feita por: zerof, 19/03/2013, 14:17.

--
zerof
ASSESSORIA & INTERDISCIPLINARIDADE
( ADVICE & INTERDISCIPLINARITY )
http://ed48.com/ - http://educar.pro.br

#3 Dudu

Dudu

    Viva la vida

  • Usuários
  • 1437 posts
  • Sexo:Masculino
  • Localidade:Uberlândia - MG
  • Interesses:PHP

Posted 30/04/2013, 15:12

Leia:
http://www.php.net/m...floor.php#44595

A solução para seu problema:


<?php
function floor_dec($number,$precision,$separator)
{
    $numberpart=explode($separator,$number);
    $numberpart[1]=substr_replace($numberpart[1],$separator,$precision,0);
    if($numberpart[0]>=0)
    {$numberpart[1]=floor($numberpart[1]);}
    else
    {$numberpart[1]=ceil($numberpart[1]);}

     $ceil_number= array($numberpart[0],$numberpart[1]);
    return implode($separator,$ceil_number);
}


$valor1 = '175';
$valor2 = '59.5';

echo floor_dec((1 - ($valor2 / $valor1)), 2, '.') * 100;
?>

Qualquer dúvida poste!

Fórum WMO - Equipe de Desenvolvimento / Banco de Dados - Moderador


Twitter: HostCheap





1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq