diff --git a/datafusion/functions/src/math/trunc.rs b/datafusion/functions/src/math/trunc.rs index 6727ba8fbdf0..b0c3b447d784 100644 --- a/datafusion/functions/src/math/trunc.rs +++ b/datafusion/functions/src/math/trunc.rs @@ -202,12 +202,12 @@ fn trunc(args: &[ArrayRef]) -> Result { fn compute_truncate32(x: f32, y: i64) -> f32 { let factor = 10.0_f32.powi(y as i32); - (x * factor).round() / factor + (x * factor).trunc() / factor } fn compute_truncate64(x: f64, y: i64) -> f64 { let factor = 10.0_f64.powi(y as i32); - (x * factor).round() / factor + (x * factor).trunc() / factor } #[cfg(test)] @@ -238,9 +238,9 @@ mod test { assert_eq!(floats.len(), 5); assert_eq!(floats.value(0), 15.0); - assert_eq!(floats.value(1), 1_234.268); + assert_eq!(floats.value(1), 1_234.267); assert_eq!(floats.value(2), 1_233.12); - assert_eq!(floats.value(3), 3.312_98); + assert_eq!(floats.value(3), 3.312_97); assert_eq!(floats.value(4), -21.123_4); } @@ -263,9 +263,9 @@ mod test { assert_eq!(floats.len(), 5); assert_eq!(floats.value(0), 5.0); - assert_eq!(floats.value(1), 234.268); + assert_eq!(floats.value(1), 234.267); assert_eq!(floats.value(2), 123.12); - assert_eq!(floats.value(3), 123.312_98); + assert_eq!(floats.value(3), 123.312_97); assert_eq!(floats.value(4), -321.123_1); } diff --git a/datafusion/sqllogictest/test_files/scalar.slt b/datafusion/sqllogictest/test_files/scalar.slt index 7be7de5a4def..b0307c4630e2 100644 --- a/datafusion/sqllogictest/test_files/scalar.slt +++ b/datafusion/sqllogictest/test_files/scalar.slt @@ -1165,7 +1165,7 @@ from small_floats; ---- 0.447 0.4 0.447 0.707 0.7 0.707 -0.837 0.8 0.837 +0.836 0.8 0.836 1 1 1 ## bitwise and