2017-07-05 3 views
0

J'ai une chaîne que je veux convertir en double en utilisant std :: stod. Cependant, la sortie de std :: stod n'est pas ce à quoi je m'attendrais. Par exemple, si ma chaîne est 6.1, la sortie de std :: stod est 6.0999999999999996.std :: stod ne donne pas le nombre exact de sortie

Y a-t-il quelque chose que je peux faire pour que std :: stod renvoie 6.1 ou pour convertir les 6.099 ... 6 en 6.1?

Répondre

1

Non. std::stod renvoie double et, dans la plupart des implémentations, double est un type binaire à virgule flottante.

Cela n'aura pas une représentation exacte de 6.1.

Si vous avez besoin de la version 6.1, pensez à utiliser un type intégral avec un facteur de mise à l'échelle approprié, ou utilisez un type décimal d'une bibliothèque tierce.

Voir Is floating point math broken?