diff --git a/Userland/Libraries/LibJS/Runtime/Value.h b/Userland/Libraries/LibJS/Runtime/Value.h index fddd33cf81..81ea3298cb 100644 --- a/Userland/Libraries/LibJS/Runtime/Value.h +++ b/Userland/Libraries/LibJS/Runtime/Value.h @@ -109,7 +109,8 @@ public: explicit Value(double value) { - if (value >= NumericLimits::min() && value <= NumericLimits::max() && trunc(value) == value && value != -0.0) { + bool is_negative_zero = value == 0.0 && (1.0 / value == -INFINITY); + if (value >= NumericLimits::min() && value <= NumericLimits::max() && trunc(value) == value && !is_negative_zero) { m_type = Type::Int32; m_value.as_i32 = static_cast(value); } else {