dtoa 0.4.8

Fast functions for printing floating-point primitives to an io::Write


This crate provides fast functions for printing floating-point primitives to an io::Write. 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.

Version requirement: rustc 1.0+

dtoa = "0.4"

Performance (lower is better)



use std::io;

fn main() -> io::Result<()> {
    // Write to a vector or other io::Write.
    let mut buf = Vec::new();
    dtoa::write(&mut buf, 2.71828f64)?;
    println!("{:?}", buf);

    // Write to a stack buffer.
    let mut bytes = [b'\0'; 20];
    let n = dtoa::write(&mut bytes[..], 2.71828f64)?;
    println!("{:?}", &bytes[..n]);


The function signature is:

fn write<W: io::Write, V: dtoa::Floating>(writer: W, value: V) -> io::Result<()>;

where dtoa::Floating is implemented for f32 and f64. The return value gives the number of bytes written.