diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/NumberWidget.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/NumberWidget.php
index 50f8006..35077fd 100644
--- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/NumberWidget.php
+++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/NumberWidget.php
@@ -73,6 +73,14 @@ public function formElement(FieldItemListInterface $items, $delta, array $elemen
     $value = isset($items[$delta]->value) ? $items[$delta]->value : NULL;
     $field_settings = $this->getFieldSettings();
 
+    // Ensure that floating point numbers are represented correctly to account
+    // for differences in various storage engines. For example, SQLite stores
+    // 8-byte IEEE floating point numbers by default, while MySQL and PostgreSQL
+    // store 4-byte floating point numbers.
+    if ($this->fieldDefinition->getType() == 'float') {
+      $value = sprintf ("%.2f", $value);
+    }
+
     $element += array(
       '#type' => 'number',
       '#default_value' => $value,
