Conversão precisa de floats em strings com precisão decimal especificada
Em C , convertendo um número de ponto flutuante em uma string com precisão específica e dígitos decimais requerem consideração cuidadosa. Este guia explora duas soluções comuns: stringstream e a função to_chars do C 17.
Usando Stringstream
Stringstream é uma ferramenta versátil para manipular strings em C . Para converter um float em uma string com precisão especificada, manipuladores de fluxo podem ser aplicados:
#include
#include
double pi = 3.14159265359;
std::stringstream stream;
stream - std::fixed garante que o número seja representado em notação de ponto fixo, com um ponto decimal e um número especificado de dígitos.
- std::setprecision(2) controla o número de casas decimais a serem exibidas.
Usando a função to_chars (C 17 e acima)
Para fins mais técnicos, como gravar dados em XML ou JSON, a função to_chars introduzida em C 17 oferece uma solução concisa:
#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
}
- A função std::to_chars usa um buffer (no formato std::array), um número e uma especificação de formato (neste caso, std::chars_format::fixed com 2 casas decimais lugares).
- Se a conversão for bem-sucedida, a string resultante será construída a partir do buffer.
Ao empregar essas técnicas, você pode converter flutua para strings em C com controle preciso sobre o número de dígitos decimais, garantindo que seus dados sejam representados com precisão e de acordo com seus requisitos.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3