From 2df0e0fcaf9f6ae8c996127440145b05985666bc Mon Sep 17 00:00:00 2001 From: xcharleslin <4212216+xcharleslin@users.noreply.github.com> Date: Tue, 1 Aug 2023 10:47:34 -0700 Subject: [PATCH] [BUG] Fix incorrect sign bug for small decimals (#1204) Co-authored-by: Xiayue Charles Lin --- src/daft-core/src/array/ops/cast.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/daft-core/src/array/ops/cast.rs b/src/daft-core/src/array/ops/cast.rs index 4e2a5b61c8..a5d954aa8d 100644 --- a/src/daft-core/src/array/ops/cast.rs +++ b/src/daft-core/src/array/ops/cast.rs @@ -310,9 +310,11 @@ pub(super) fn decimal128_to_str(val: i128, _precision: u8, scale: i8) -> String if scale == 0 { format!("{}", integral) } else { + let sign = if val < 0 { "-" } else { "" }; + let integral = integral.abs(); let decimals = (val % modulus).abs(); let scale = scale as usize; - format!("{}.{:0scale$}", integral, decimals) + format!("{}{}.{:0scale$}", sign, integral, decimals) } } }