Est-il sûr de vérifier les valeurs à virgule flottante pour l'égalité à 0?

Je sais que vous ne pouvez pas compter sur l'égalité entre les double ou décimal des valeurs du type normalement, mais je me demandais si 0 est un cas particulier.

Même si je peux comprendre les imprécisions entre 0.00000000000001 et 0.00000000000002, 0 lui-même semble assez difficile de désordre, car il est tout simplement rien. Si vous êtes imprécise sur rien, c'est pas rien de plus.

Mais je ne sais pas beaucoup sur ce sujet, il n'est donc pas pour moi de dire.

double x = 0.0;
return (x == 0.0) ? true : false;

Qui va toujours retourner vrai?

  • L'opérateur ternaire est redondante dans ce code 🙂
  • LOL vous avez raison. Aller moi
  • Je ne voudrais pas le faire parce que vous don t savent comment x s'est mis à zéro. Si vous voulez le faire, vous voudrez probablement le rond ou le plancher x pour se débarrasser de la 1e-12 ou tels qui pourraient être marqué sur la fin.
InformationsquelleAutor Gene Roberts | 2009-01-27