Bonjour,
Lors d'un TP, je dois trouver le zéro machine en simple et double précisions.
J'ai pu sans difficulté trouvé le zéro machine en simple précision.
Cependant, lorsque je passe en double précision, mon "zero" qui devrait être égal à 2^-1074 est égal à 0 alors qu'il devrait être égal à environ 10-324.
Je tire ce nombre de Wikipedia. Pouvons-nous vraiment coder ce nombre ?
Mon programme n'a pas de sortie. Cependant même en passant au déboggeur, j'ai la confirmation que 2-1074 est égal à 0 puisque sa représentation binaire est composée de 64 zéros successifs.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 #include <stdio.h> #include <math.h> int main() { double xmin=1./pow(2,1022), zero=1./pow(2,1074); double xplus, xmoins; xplus=xmin+zero; xmoins=xmin-zero; }
Remarque : 2^-1022 est le xmin : le plus petit flottant positif normalisé en double précision sous la norme IEEE 754.
Ici, je voulais voir les "voisins" du xmin.
J'ai déjà utilisé des programmes pour déterminer le zéro machine mais dès 2^-1024, on m'indique que ce nombre vaut 0 avec encore ici une représentation binaire avec 64 zéros.
Je me demande donc pourquoi j'ai ce problème là puisque je n'ai connu aucun problème en simple précision (float).
Merci d'avance.
Partager