Configurable float and double printing. pretty_dtoa
Comes with lots of options for configuring different aspects of displaying floats, and has only 1 dependency total (including dependencies of dependencies), for very fast compile times.
This crate uses the ryu-floating-decimal crate (itself a fork of the ryu crate) to generate a "floating decimal", or a floating point with radix 10, and then it uses formatting rules particular to the configuration to create a formatted string.
This module is only slightly slow (usually between 1x and 2x slower than the default Display implementation for f64). Benchmarks can be run with cargo bench
.
Consider using pretty_dtoa
if the default behavior of Display
and alternative float printing libraries like ryu
is not ideal for one reason or another
use pretty_dtoa::{dtoa, FmtFloatConfig};
let config = FmtFloatConfig::default()
.force_no_e_notation() // Don't use scientific notation
.add_point_zero(true) // Add .0 to the end of integers
.max_significant_digits(4) // Stop after the first 4 non-zero digits
.radix_point(',') // Use a ',' instead of a '.'
.round(); // Round after removing non-significant digits
assert_eq!(dtoa(12459000.0, config), "12460000,0");
See the tests in src/lib.rs
for examples of each feature, and the documentation to see all configurable features.