2 votes

Conversion des nombres flottants en une chaîne formatée

Je cherche à convertir un nombre double en une std::string, la conversion devrait s'afficher soit au format décimal avec 2 chiffres décimaux, soit sous forme exponentielle :

  1. 1 -> 1.00
  2. 0.1 -> 0.10
  3. 0.01 -> 0.01
  4. 0.015 -> 1.5e-2
  5. 10 -> 10.00
  6. 100 -> 100.00
  7. 15000 -> 1.5e4

J'ai essayé d'utiliser la fonction boost::format avec le type %g, mais bien qu'il soit possible de définir le nombre de chiffres significatifs, il n'est pas possible de définir le nombre de chiffres imprimés après le point décimal :

  1. 1 -> 1
  2. 0.1 -> 0.1
  3. 0.01 -> 0.01
  4. 10 -> 10
  5. 100 -> 100

Existe-t-il un meilleur moyen de réaliser ce type de conversion/formatage ? Je préférerais utiliser la bibliothèque Standard ou Boost.

-1voto

ZeroDiv Points 232

Ancien C sprintf supporte # de décimales comme ceci : "%.3g"

Vous pouvez facilement convertir la sortie char* en std::string.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X