Pour ta deuxième question (comparaison virgule fixe/virgule flottante):
Chaque approche a un intérêt propre directement lié à ce que veut faire l'utilisateur.
En gros la virgule fixe sert à représenter uniformément les réels d'un intervalle fixe a;b. C'est donc du "râteau fixe" où les nombres sont uniformément répartis (de la forme a+ (b-a) k 2^{-f} où k est un entier compris entre 0 et 2^f-1). Bref, manipuler de la virgule fixe, c'est quasiment comme manipuler des entiers k avec des ulp constants égaux à (b-a)2^{-f}. L'avantage c'est que ça fournit de l'exactitude dans [a;b] pour des additions/soustractions (c'est super pour les manipulations monétaires).
Par contre, tu n'as aucune dynamique ni vers 0+ ni vers +\infty. Par exemple, la moitié d'un ulp donnera directement 0. Et tu resteras coincé entre a et b. En science, la dynamique est essentielle, l'exactitude sur une machine, est une illusion: on choisit naturellement les floats. Le banquier choisir naturellement la virgule fixe.
La plupart des langages évolués ont des modules pour gérer la virgule fixe (d'ailleurs souvent à partir des flottants !).
[^] # Re: Ne règle pas le "problème" du journa précédent
Posté par snowball (site web personnel) . En réponse au journal Le retour de la vengeance de la virgule flottante. Évalué à 2.
Pour ta deuxième question (comparaison virgule fixe/virgule flottante):
Chaque approche a un intérêt propre directement lié à ce que veut faire l'utilisateur.
En gros la virgule fixe sert à représenter uniformément les réels d'un intervalle fixe a;b. C'est donc du "râteau fixe" où les nombres sont uniformément répartis (de la forme a+ (b-a) k 2^{-f} où k est un entier compris entre 0 et 2^f-1). Bref, manipuler de la virgule fixe, c'est quasiment comme manipuler des entiers k avec des ulp constants égaux à (b-a)2^{-f}. L'avantage c'est que ça fournit de l'exactitude dans [a;b] pour des additions/soustractions (c'est super pour les manipulations monétaires).
Par contre, tu n'as aucune dynamique ni vers 0+ ni vers +\infty. Par exemple, la moitié d'un ulp donnera directement 0. Et tu resteras coincé entre a et b. En science, la dynamique est essentielle, l'exactitude sur une machine, est une illusion: on choisit naturellement les floats. Le banquier choisir naturellement la virgule fixe.
La plupart des langages évolués ont des modules pour gérer la virgule fixe (d'ailleurs souvent à partir des flottants !).