La forma más rápida de C ++ de convertir flotante en cadena

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