La forma más rápida de C ++ de convertir flotante en cadena
Estos son algunos de los algoritmos más rápidos para convertir números de punto flotante en una representación de cadena decimal:
- Grisu de Florian Loitsch:Imprimir números de coma flotante de forma rápida y precisa con enteros
- Ryū de Ulf Adams:Ryū:conversión rápida de flotante a cadena
- Schubfach de Raffaello Giulietti:la manera Schubfach de hacer dobles
- Dragonbox de Junekey Jeon:Dragonbox:un nuevo algoritmo de conversión de punto flotante de binario a decimal
Al momento de escribir, Dragonbox es el más rápido de estos métodos, seguido por Schubfach, luego una variación de Grisu llamada Grisu-Exact (que no debe confundirse con Grisu2 y Grisu3) y luego Ryū:
Una implementación de Dragonbox está disponible aquí. También se incluye en la biblioteca {fmt} integrada en una API de formato de alto nivel. Para obtener el máximo rendimiento, puede usar format_to
con un búfer asignado a la pila, por ejemplo:
fmt::memory_buffer buf;
fmt::format_to(buf, "{}", 4.2);
// buf.data() returns a pointer to the formatted data & buf.size() gives the size