protected boolean isIntegral(FacesContext context, InputNumber component, Object value) {
        if (value != null) {
            return value instanceof Long
                    || value instanceof Integer
                    || value instanceof Short
                    || value instanceof BigInteger
                    || value instanceof Byte;
        }

        Class<?> type = getTypeFromValueExpression(context, component);

        // #11791 Number is the superclass for all the types so it could be a decimal
        if (type == null || type == Number.class) {
            return false;
        }

        return type.isAssignableFrom(Long.class)
                || type.isAssignableFrom(Integer.class)
                || type.isAssignableFrom(Short.class)
                || type.isAssignableFrom(BigInteger.class)
                || type.isAssignableFrom(Byte.class);
    }
If using @Negative annotation and this is an Integer default to 0 instead of -0.0001.
@param context faces context
@param isIntegral flag whether the (expected) value is integral
@param component the component
@return the maximum value of the component
primefaces/src/main/java/org/primefaces/component/inputnumber/InputNumberRenderer.java