From: Mark Thom Date: Fri, 4 Feb 2022 02:57:41 +0000 (-0700) Subject: fix float formatting (#1233, #1258) X-Git-Tag: v0.9.0^2~33 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=3c022e4332fac701cdb45e0487089a2925218a3e;p=scryer-prolog.git fix float formatting (#1233, #1258) --- diff --git a/src/heap_print.rs b/src/heap_print.rs index 40afdbfc..8852c3c8 100644 --- a/src/heap_print.rs +++ b/src/heap_print.rs @@ -938,10 +938,20 @@ impl<'a, Outputter: HCValueOutputter> HCPrinter<'a, Outputter> { fl = 0f64; } - let output_str = format!("{0:<20?}", fl); + let output_str = if fl.fract() == 0f64 { + if fl.abs() >= 1.0e16 { + format!("{:.1e}", fl.trunc()) + } else { + format!("{:.1}", fl.trunc()) + } + } else if 0f64 < fl.fract().abs() && fl.fract().abs() <= 1.0e-16 { + format!("{:>1e}", fl) + } else { + format!("{}", fl) + }; push_space_if_amb!(self, &output_str, { - append_str!(self, &output_str.trim()); + append_str!(self, &output_str); }); } Number::Rational(r) => {