From 522d93745c3b92a93493c2d81c01e3cf6267994e Mon Sep 17 00:00:00 2001 From: Vincent Ambo Date: Wed, 10 Aug 2022 20:01:23 +0300 Subject: fix(tvix/value): fix display representation of floats Nix displays a maximum of 5 digits for floating points. Change-Id: Ifa3c0d96fa0b24e3be8f94dfebc99e602a258355 Reviewed-on: https://cl.tvl.fyi/c/depot/+/6133 Tested-by: BuildkiteCI Reviewed-by: sterni --- tvix/eval/src/value/mod.rs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'tvix/eval/src/value/mod.rs') diff --git a/tvix/eval/src/value/mod.rs b/tvix/eval/src/value/mod.rs index 99c7ee8647..0a430ae08c 100644 --- a/tvix/eval/src/value/mod.rs +++ b/tvix/eval/src/value/mod.rs @@ -80,11 +80,17 @@ impl Display for Value { Value::Bool(true) => f.write_str("true"), Value::Bool(false) => f.write_str("false"), Value::Integer(num) => f.write_fmt(format_args!("{}", num)), - Value::Float(num) => f.write_fmt(format_args!("{}", num)), Value::String(s) => s.fmt(f), Value::Attrs(attrs) => attrs.fmt(f), Value::List(list) => list.fmt(f), + // Nix prints floats with a maximum precision of 5 digits + // only. + Value::Float(num) => f.write_fmt(format_args!( + "{}", + format!("{:.5}", num).trim_end_matches(['.', '0']) + )), + // internal types Value::AttrPath(_) | Value::Blackhole => f.write_str("internal"), } -- cgit 1.4.1