Est la vérification d'un lit double pour l'égalité jamais à l'abri?

J'ai le code suivant:

double x = 0;

{ ...do stuff ...}

if(x == 0){

}

J'ai toujours été enseigné que vous ne devriez pas vérifier les flotteurs pour l'égalité. Vérifie pour voir si elle est égale à zéro différent?

  • je ne comprenez pas, si vous init x 0 pourquoi il n'est pas bon de vérifier si 0 ? 0 est une valeur valide pour le double
  • Les nombres à virgule flottante ont beaucoup d'arrondi lorsque vous commencez à atteindre les limites. Même raison que si vous avez 3 chiffres en base dix, vous avez .004 et de diviser par trois, vous vous attendez .001, mais qui sait ce qui se passe.
  • Thomas corrections: C'est techniquement pas d'arrondi, mais l'imprécision due à la précision limitée et la nature binaire de la flotte.
  • Quelqu'un devrait résumer toutes les réponses à cette question.
InformationsquelleAutor Steve | 2011-08-24