Conversión precisa de flotantes en cadenas con precisión decimal especificada
En C, convertir un número de punto flotante en una cadena con precisión específica y Los dígitos decimales requieren una consideración cuidadosa. Esta guía explora dos soluciones comunes: stringstream y la función to_chars de C 17.
Uso de Stringstream
Stringstream es una herramienta versátil para manipular cadenas en C. Para convertir un flotante en una cadena con una precisión especificada, se pueden aplicar manipuladores de flujo:
#include
#include
double pi = 3.14159265359;
std::stringstream stream;
stream - std::fixed garantiza que el número se represente en notación de punto fijo, con un punto decimal y un número específico de dígitos.
- std::setprecision(2) controla el número de decimales que se mostrarán.
Uso de la función to_chars (C 17 y superior)
Para Para fines más técnicos, como escribir datos en XML o JSON, la función to_chars introducida en C 17 ofrece una solución 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
}
- La función std::to_chars toma un búfer (en forma std::array), un número y una especificación de formato (en este caso, std::chars_format::fixed con 2 decimales lugares).
- Si la conversión se realiza correctamente, la cadena resultante se construye a partir del búfer.
Al emplear estas técnicas, puede convertir puntos flotantes en cadenas en C con un control preciso sobre el número de dígitos decimales, lo que garantiza que sus datos se representen con precisión y de acuerdo con sus requisitos.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3