#floating-point #string-conversion #no-alloc #float

no-std zmij

A double-to-string conversion algorithm based on Schubfach and yy

35 releases (22 stable)

1.0.21 Feb 12, 2026
1.0.20 Feb 8, 2026
1.0.18 Jan 30, 2026
1.0.6 Dec 31, 2025
0.0.1 Dec 18, 2025

#120 in Value formatting

Download history 4383654/week @ 2026-01-23 4581650/week @ 2026-01-30 4923910/week @ 2026-02-06 5292546/week @ 2026-02-13 5596812/week @ 2026-02-20 6443169/week @ 2026-02-27 6962518/week @ 2026-03-06 7248204/week @ 2026-03-13 7594365/week @ 2026-03-20 7501577/week @ 2026-03-27 7644258/week @ 2026-04-03 8611210/week @ 2026-04-10 8674493/week @ 2026-04-17 9183746/week @ 2026-04-24 9513616/week @ 2026-05-01 10602809/week @ 2026-05-08

39,573,084 downloads per month
Used in 122,396 crates (42 directly)

MIT license

60KB
1K SLoC

Żmij

github crates.io docs.rs build status

Pure Rust implementation of Żmij, an algorithm to quickly convert floating point numbers to decimal strings.

This Rust implementation is a line-by-line port of Victor Zverovich's implementation in C++, https://github.com/vitaut/zmij.

Example

fn main() {
    let mut buffer = zmij::Buffer::new();
    let printed = buffer.format(1.234);
    assert_eq!(printed, "1.234");
}

Performance

The dtoa-benchmark compares this library and other Rust floating point formatting implementations across a range of precisions. The vertical axis in this chart shows nanoseconds taken by a single execution of zmij::Buffer::new().format_finite(value) so a lower result indicates a faster library.

performance


License

MIT license.

Dependencies

~67KB