2 votes

Tie-breaking pour arrondir au flottant représentable le plus proche en c?

Toujours pas clair après plusieurs expériences. Nous savons que si nous faisons float a = X.XXXX et que le nombre n'est pas représentable en float, il sera arrondi au nombre le plus proche. Mais la question est que se passe-t-il si l'arrondi vers le haut et l'arrondi vers le bas sont à la même distance? Quelle est la règle générale pour le choix en cas d'égalité?

1voto

Leandros Points 5916

C'est défini par l'implémentation. En supposant IEEE 754 :

La norme définit 5 modes d'arrondi qui pourraient être utilisés. Les deux modes d'intérêt sont :

  • Arrondi au plus proche, les égalités sont arrondies vers le pair (c'est la valeur par défaut pour les nombres à virgule flottante binaires et la valeur par défaut recommandée pour les nombres décimaux)
  • Arrondi au plus proche, les égalités sont arrondies à l'opposé de zéro

Les 3 autres sont appelés les modes d'arrondi dirigés :

  • Arrondi vers zéro
  • Arrondi vers - l'infini
  • Arrondi vers l'infini

0voto

Idos Points 8932

Si je ne me trompe pas, cela devrait fonctionner comme indiqué ici (gras ajouté) :

Arrondir au plus proche. Ce mode est le mode par défaut. Il devrait être utilisé sauf s'il existe un besoin spécifique pour l'un des autres. Dans ce mode, les résultats sont arrondis à la valeur la plus proche. Si le résultat est à mi-chemin entre deux valeurs représentables, la valeur représentable la plus proche est choisie. Ici, même signifie le bit d'ordre le plus bas est zéro.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X