[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