pourrait-il être quelque chose comme la valeur réelle de DBL_MAX
n'est pas exactement représentable en notation exponentielle avec 16 décimales (dire la valeur décimale est très légèrement plus grande que les deux represenation base), mais l'initialisation d'une double
avec le DBL_MAX
va néanmoins régler la valeur correcte (en raison de l'arrondissement). std::istringstream
peut être un peu plus sélectif.
EDIT: En fait, je trouve que la valeur de DBL_MAX
dans mon compilateur est 1.7976931348623158e + 308 qui fonctionne très bien pour moi de ruisseau. Votre nombre est arrondi et légèrement plus grand, d'où l'échec.
EDIT2: La valeur exacte de DBL_MAX
sous forme décimale est donnée par (2^(1023 - 52)) * (2^53 - 1)
qui est représentable pas avec 16 décimales.
Notez que vous avez besoin de 17 chiffres décimaux pour déterminer de manière unique un double, pas 15. – avakar