Conversion précise de flottants en chaînes avec une précision décimale spécifiée
En C , convertir un nombre à virgule flottante en chaîne avec une précision spécifique et les chiffres décimaux nécessitent un examen attentif. Ce guide explore deux solutions courantes : stringstream et la fonction to_chars de C 17.
Utilisation de Stringstream
Stringstream est un outil polyvalent pour manipuler des chaînes en C . Pour convertir un float en chaîne avec une précision spécifiée, des manipulateurs de flux peuvent être appliqués :
#include
#include
double pi = 3.14159265359;
std::stringstream stream;
stream - std::fixed garantit que le nombre est représenté en notation à virgule fixe, avec un point décimal et un nombre spécifié de chiffres.
- std::setprecision(2) contrôle le nombre de décimales à afficher.
Utilisation de la fonction to_chars (C 17 et supérieur)
Pour des fins plus techniques, telles que l'écriture de données au format XML ou JSON, la fonction to_chars introduite dans C 17 offre une solution concise :
#include
#include
double pi = 3.14159265359;
std::array buffer;
auto [ptr, ec] = std::to_chars(buffer.data(), buffer.data() buffer.size(), pi,
std::chars_format::fixed, 2);
if (ec == std::errc{}) {
std::string s(buffer.data(), ptr);
}
else {
// Error handling
}
- La fonction std::to_chars prend un tampon (sous forme std::array), un nombre et une spécification de format (dans ce cas, std::chars_format::fixed avec 2 décimales places).
- Si la conversion réussit, la chaîne résultante est construite à partir du tampon.
En employant ces techniques, vous pouvez convertir flotte vers les chaînes en C avec un contrôle précis sur le nombre de chiffres décimaux, garantissant que vos données sont représentées avec précision et conformément à vos besoins.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3