Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: Comparaison de float / utilisation de float  (Lu 1856 fois)

0 Membres et 1 Invité sur ce sujet

Trolol75

  • Newbie
  • *
  • Messages: 5
    • Voir le profil
Comparaison de float / utilisation de float
« le: Avril 06, 2013, 02:30:17 am »
Bonsoir,
je dois malheureusement encore vous déranger à cause de quelques questions auxquelles je n'arrive pas à trouver de réponses.

La première porte sur la comparaison de float : Sur pas mal de sites il est dit que comparer des float est une mauvaise idée. Cependant c'est pas très clair, quelles sont les opérateurs qu'il ne faut vraiment pas utiliser? Parfois il est dit que c'est une comparaison ( mais bon, c'est vague ), parfois qu'il faut éviter == et !=, enfin bref, pour éviter de prendre des sales habitudes je préfère m'en assurer.
Ma deuxième question porte sur sf::Clock.
Il me semble que pour avoir un déplacement constant il faut forcément utiliser le temps, c'est donc ce que je fais ( et ça marche ). Sauf que lorsque j'appuie sur la barre de menu, le programme freeze, cependant comme Clock continue d'avancer, et lors du relâchement du clic, tout les sprites qui se déplacent se retrouvent un peu n'importe où. Que faire pour éviter ce problème?

Merci d'avance.

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Comparaison de float / utilisation de float
« Réponse #1 le: Avril 06, 2013, 09:09:22 am »
Le "problème" avec les floats est très simple à comprendre : un flottant n'est pas toujours stocké de manière exacte en mémoire, parfois tu peux avoir une valeur approchée de ce que tu veux en réalité. Du coup, tout ce qui requiert une comparaison stricte (== et !=) n'est pas fiable, et il faudra plutôt comparer avec une petite marge d'erreur, par exemple :

if (abs(f - 0.5f) < epsilon)
{
   // f est "égal" à 0.5, plus ou moins "epsilon"
}

La valeur de epsilon dépend de ce que tu veux faire. Si tu t'en fiches, 1E-5 marche bien. Si tu veux un truc plus juste mathématiquement parlant, il faut le calculer en fonction des deux valeurs que tu compares.

En ce qui concerne le "freeze", tout ton programme est bloqué tant que tu déplaces ou redimensionnes la fenêtre, c'est dû à l'OS et je n'y peux pas grand chose. Du coup il faut soit gérer les évènements dans un thread à part, soit ignorer les updates qui font plus d'une seconde par exemple.
Laurent Gomila - SFML developer

Trolol75

  • Newbie
  • *
  • Messages: 5
    • Voir le profil
Re : Comparaison de float / utilisation de float
« Réponse #2 le: Avril 13, 2013, 04:40:47 am »
Je vois, merci :)