[Cascavel-pm] Problema com IF

Nilson Santos Figueiredo Junior acid06 em gmail.com
Quarta Agosto 1 09:54:05 PDT 2007


On 8/1/07, Patty Silva <ptfzs em yahoo.com.br> wrote:
> Ele imprimiu OK... ele nao compara float?

Você tem que tomar cuidado quando está trabalhando com número de ponto
flutuante.

Logo antes da comparação, dê um print nas variáveis e confira se os
valores estão realmente o que você deseja porque aquele 9.50 pode,
facilmente, ter sido transformado em 9.4999999999 ou aquele -7.9 em
-7.899999999 ou algo assim.

Isso acontece quando trabalhando com números de ponto flutuante em
qualquer linguagem de programação e é uma questão de precisão.

Não sei se esse é o seu problema nesse caso, mas a forma adequada para
se comparar floats com segurança em qualquer linguagem é algo do tipo:

  use constant TOLERANCE => 0.0001;

  # compara se $float e $value são iguais
  if ($float <= $value + TOLERANCE || $float >= $value -TOLERANCE) {
    print "Numeros iguais";
  }

-Nilson Santos F. Jr.


Mais detalhes sobre a lista de discussão Cascavel-pm