diff --git a/crates/nu-protocol/src/value.rs b/crates/nu-protocol/src/value.rs index 09c3e57806..18a538e685 100644 --- a/crates/nu-protocol/src/value.rs +++ b/crates/nu-protocol/src/value.rs @@ -509,10 +509,17 @@ impl Value { match (self, rhs) { (Value::Int { val: lhs, .. }, Value::Int { val: rhs, .. }) => { if *rhs != 0 { - Ok(Value::Int { - val: lhs / rhs, - span, - }) + if lhs % rhs == 0 { + Ok(Value::Int { + val: lhs / rhs, + span, + }) + } else { + Ok(Value::Float { + val: (*lhs as f64) / (*rhs as f64), + span, + }) + } } else { Err(ShellError::DivisionByZero(op)) }