C'est du au meme problème que:
std::numeric_limits<double>::max()-10 == std::numeric_limits<double>::max()
Les flottant sont une approximation assez proche mais qu'une approximation des reels:
en faisant:
std::numeric_limits<double>::max()/10.-std::numeric_limits<double>::max()/10,
Le programme te retourne le un resultat qui "approxime" zero, de la meme façon que parfois x/10-x/10 = 1.E-71 ou du genre.
En fait, il faut comprendre que 4.99447e+290, c'est le plus petit "pas" pour un flottant aussi grand, c'est à dire que la valeur de la mantisse est multiplié par ce nombre.
Je te propose d'aller jeter un coup d'oeil sur le net sur la norme IEEE 754, tu comprendras bien mieux que j'explique
Partager