diff --git a/implementations/rust/preserves/Cargo.toml b/implementations/rust/preserves/Cargo.toml index 7f23e9b..1ebd97b 100644 --- a/implementations/rust/preserves/Cargo.toml +++ b/implementations/rust/preserves/Cargo.toml @@ -13,6 +13,7 @@ gitlab = { repository = "preserves/preserves" } [dependencies] base64 = "0.13" +dtoa = "0.4" num = "0.2" regex = "1.5" serde = { version = "1.0", features = ["derive"] } diff --git a/implementations/rust/preserves/src/value/text/writer.rs b/implementations/rust/preserves/src/value/text/writer.rs index 4d61164..a321240 100644 --- a/implementations/rust/preserves/src/value/text/writer.rs +++ b/implementations/rust/preserves/src/value/text/writer.rs @@ -131,11 +131,13 @@ impl Writer for TextWriter { } fn write_f32(&mut self, v: f32) -> io::Result<()> { - write!(self.0, "{:e}f", v) + dtoa::write(&mut *self.0, v)?; + write!(self.0, "f") } fn write_f64(&mut self, v: f64) -> io::Result<()> { - write!(self.0, "{:e}", v) + dtoa::write(&mut *self.0, v)?; + Ok(()) } simple_writer_method!(write_i8, i8);