1

Je sais que je ne peux pas comparer deux nombres à virgule flottante ou doubles pour l'égalité absolue sur C++/C. Si pour une raison quelconque, j'écris une condition if qui utilise l'égalité absolue, est-il garanti que la condition if retournera le même résultat sur différentes exécutions du programme pour les mêmes données? Ou est-ce purement non déterministe et le résultat peut varier?Comparaison de virgule flottante - Résultat entre différentes exécutions

Répondre

1

Pour la même binaire compilé et sur le même PC, les résultats devraient être les mêmes. Si vous utilisez un autre compilateur ou un autre PC, les résultats peuvent varier.

+0

Par un autre PC, vous voulez dire avec une architecture différente? –

+0

Oui, je pense que c'est la seule chose qui fait la différence ici. – schnaader

+0

Je reçois des résultats différents de temps en temps sur l'inversion de matrice (bit moins significatif) exécutant le même exécutable sur la même machine. – peterdemin

0

J'ai déjà eu un test unitaire qui a échoué sur une machine avec un processeur Intel, mais marchait bien sur un AMD. Il y avait probablement une certaine différence dans l'arrondi, et le test plus ou moins a heurté le critère de réussite/échec.

Mais je ne voudrais pas la litière de votre code avec des tests overcomplex partout à cause de cela.