Converting Binary Floating-Point Numbers to Shortest Decimal Strings: An Experimental Review

Thursday, 29 Jan 2026·
Jaël Champagne Gareau
Jaël Champagne Gareau
,
Daniel Lemire
Abstract
When sharing or logging numerical data, we must convert binary floating-point numbers into their decimal string representations. For example, the number $\pi$ might become 3.1415927. Engineers have perfected many algorithms for producing such accurate, short strings. We present an empirical comparison across diverse hardware architectures and datasets. Cutting-edge techniques like Schubfach and Dragonbox achieve up to a tenfold speedup over Steele and White’s Dragon4, executing as few as 210 instructions per conversion compared to Dragon4’s 1500–5000 instructions. Often per their specification, none of the implementations we surveyed consistently produced the shortest possible strings—some generate outputs up to 30% longer than optimal. We find that standard library implementations in languages such as C++ and Swift execute significantly more instructions than the fastest methods, with performance gaps varying across CPU architectures and compilers. We suggest some optimization targets for future research.
Type
Publication
Software: Practice and Experience
publications
Jaël Champagne Gareau
Authors
Postdoctoral Researcher in Computer Science
I am currently a postdoctoral researcher in computer science at Université TÉLUQ, where my research focuses on speeding up the conversion of integer and floating-point numbers into decimal strings. During my doctoral studies, I designed algorithms and data structures that leverage modern computer architectures to solve large instances of Markov decision processes (MDPs). In my master’s research, I developed routing algorithms for electric vehicles aimed at determining the optimal path between two points while minimizing travel time (including driving, charging, and expected waiting time at charging stations).

Citation