diff --git a/includes/webform.conditionals.inc b/includes/webform.conditionals.inc
index ab2a44e..5610034 100644
--- a/includes/webform.conditionals.inc
+++ b/includes/webform.conditionals.inc
@@ -1027,13 +1027,43 @@ function webform_conditional_operator_string_not_empty($input_values, $rule_valu
 }
 
 /**
- * Conditional callback for numeric comparisons.
+ * Compare two floats.
+ *
+ * @param $number_1 float
+ *   The first number.
+ * @param $number_2 float
+ *   The second number.
+ *
+ * @return int|null
+ *   < 0 if number_1 is less than number_2; > 0 if number_1 is greater than
+ *   number_2, 0 if they are equal, and NULL if either is not numeric.
  */
-function webform_conditional_operator_numeric_equal($input_values, $rule_value) {
+function webform_conditional_compare_floats($number_1, $number_2) {
+  if (!is_numeric($number_1) || !is_numeric($number_2)) {
+    return NULL;
+  }
+
+  $number_1 = (float)$number_1;
+  $number_2 = (float)$number_2;
+
   // See float comparison: http://php.net/manual/en/language.types.float.php
   $epsilon = 0.000001;
-  // An empty string does not match any number.
-  return $input_values[0] === '' ? FALSE : (abs((float)$input_values[0] - (float)$rule_value) < $epsilon);
+  if (abs($number_1 - $number_2) < $epsilon) {
+    return 0;
+  }
+  elseif ($number_1 > $number_2) {
+    return 1;
+  }
+  else {
+    return -1;
+  }
+}
+
+/**
+ * Conditional callback for numeric comparisons.
+ */
+function webform_conditional_operator_numeric_equal($input_values, $rule_value) {
+  return webform_conditional_compare_floats($input_values[0], $rule_value) === 0;
 }
 
 /**
@@ -1047,14 +1077,14 @@ function webform_conditional_operator_numeric_not_equal($input_values, $rule_val
  * Conditional callback for numeric comparisons.
  */
 function webform_conditional_operator_numeric_greater_than($input_values, $rule_value) {
-  return (float)$input_values[0] > (float)$rule_value;
+  return webform_conditional_compare_floats($input_values[0], $rule_value) > 0;
 }
 
 /**
  * Conditional callback for numeric comparisons.
  */
 function webform_conditional_operator_numeric_less_than($input_values, $rule_value) {
-  return (float)$input_values[0] < (float)$rule_value;
+  return webform_conditional_compare_floats($input_values[0], $rule_value) < 0;
 }
 
 /**
