28 releases (12 stable)

1.0.11 Dec 27, 2025
1.0.10 Mar 3, 2025
1.0.9 Jul 15, 2023
1.0.6 Mar 3, 2023
0.2.2 Jul 31, 2016

#20 in Value formatting

Download history 767489/week @ 2025-10-20 801309/week @ 2025-10-27 846492/week @ 2025-11-03 782009/week @ 2025-11-10 882812/week @ 2025-11-17 698779/week @ 2025-11-24 760568/week @ 2025-12-01 769187/week @ 2025-12-08 740845/week @ 2025-12-15 520456/week @ 2025-12-22 521676/week @ 2025-12-29 792082/week @ 2026-01-05 865302/week @ 2026-01-12 919378/week @ 2026-01-19 988854/week @ 2026-01-26 1076341/week @ 2026-02-02

3,922,292 downloads per month
Used in 4,858 crates (45 directly)

MIT/Apache

44KB
630 lines

dtoa

github crates.io docs.rs build status

This crate provides fast conversion of floating point primitives to decimal strings. The implementation is a straightforward Rust port of Milo Yip's C++ implementation dtoa.h. The original C++ code of each function is included in comments.

See also itoa for printing integer primitives.

[dependencies]
dtoa = "1.0"

Example

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

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 dtoa::Buffer::new().format_finite(value) so a lower result indicates a faster library.

performance


License

Licensed under either of Apache License, Version 2.0 or MIT license at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Dependencies

~82KB