diff --git a/modules/number/number.module b/modules/number/number.module
index 182c9f1..d2732a1 100644
--- a/modules/number/number.module
+++ b/modules/number/number.module
@@ -438,8 +438,18 @@ function number_process($element, $edit, $form_state, $form) {
   $field = $form['#field_info'][$field_name];
   $field_key  = $element['#columns'][0];
 
-  $value = isset($element['#value'][$field_key]) ? $element['#value'][$field_key] : '';
-  $value = isset($field['decimal']) ? str_replace('.', $field['decimal'], $value) : $value;
+  if (isset($element['#value'][$field_key])) {
+    // The element value may be in the database format (with dot for decimal
+    // separator) or 'user entered' format. Normalize to 'user entered' format.
+    if (isset($field['decimal'])) {
+      $element['#value'][$field_key] =
+        str_replace('.', $field['decimal'], $element['#value'][$field_key]);
+    }
+    $value = $element['#value'][$field_key];
+  }
+  else {
+    $value = '';
+  }
   $element[$field_key] = array(
     '#type' => 'textfield',
     '#default_value' => $value,
