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é?
Réponses
Trop de publicités?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
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.