diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/NumericItemBase.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/NumericItemBase.php
index 23f5161..e78bd69 100644
--- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/NumericItemBase.php
+++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/NumericItemBase.php
@@ -79,7 +79,7 @@ public function getConstraints() {
     $settings = $this->getSettings();
     $label = $this->getFieldDefinition()->getLabel();
 
-    if (!empty($settings['min'])) {
+    if (is_numeric($settings['min'])) {
       $min = $settings['min'];
       $constraints[] = $constraint_manager->create('ComplexData', [
         'value' => [
@@ -91,7 +91,7 @@ public function getConstraints() {
       ]);
     }
 
-    if (!empty($settings['max'])) {
+    if (is_numeric($settings['max'])) {
       $max = $settings['max'];
       $constraints[] = $constraint_manager->create('ComplexData', [
         'value' => [
diff --git a/core/tests/Drupal/KernelTests/Core/TypedData/TypedDataTest.php b/core/tests/Drupal/KernelTests/Core/TypedData/TypedDataTest.php
index c79f2cf..c04e4a2 100644
--- a/core/tests/Drupal/KernelTests/Core/TypedData/TypedDataTest.php
+++ b/core/tests/Drupal/KernelTests/Core/TypedData/TypedDataTest.php
@@ -629,6 +629,14 @@ public function testTypedDataValidation() {
 
     $this->assertEqual($violations[0]->getInvalidValue(), 'string');
     $this->assertIdentical($violations[0]->getPropertyPath(), '0.value');
+
+    // Test validating when settings min/max = 0
+    $definition = BaseFieldDefinition::create('integer')
+      ->setSettings(['min' => 0, 'max' => 0]);
+    $violations = $this->typedDataManager->create($definition, 1)->validate();
+    $this->assertEqual($violations->count(), 1);
+    $violations = $this->typedDataManager->create($definition, -1)->validate();
+    $this->assertEqual($violations->count(), 1);
   }
 
 }
