--- modules/cck/number.module	2007-02-06 10:31:36.000000000 +1100
+++ /home/nterbogt/tmp/cck/number.module	2007-01-27 02:25:25.000000000 +1100
@@ -134,9 +134,6 @@ function number_field($op, &$node, $fiel
         foreach ($items as $delta => $item) {
           $error_field = $field['field_name'].']['.$delta.'][value';
           if ($item['value'] != '') {
-            if (!is_numeric($item['value'])) {
-              form_set_error($error_field, t('Illegal value for %name. %name must be numeric.', array('%name' => t($field['widget']['label']))));
-            }
             if (is_numeric($field['min']) && $item['value'] < $field['min']) {
               form_set_error($error_field, t('The value of %name may be no smaller than %min.', array('%name' => t($field['widget']['label']), '%min' => $field['min'])));
             }
@@ -342,6 +339,10 @@ function number_widget($op, &$node, $fie
       return $form;
 
     case 'process form values':
+      // Don't save empty fields.
+      foreach ($items as $delta => $item) {
+        $items[$delta]['value'] = preg_replace('@[^-0-9\.]@','',$items[$delta]['value']);
+      }
       if ($field['multiple']) {
         foreach ($items as $delta => $item) {
           if ($item['value'] == '' && $delta > 0) {
@@ -383,4 +384,4 @@ function number_allowed_values($field) {
     }
   }
   return $allowed_values[$field['field_name']];
-}
+}
\ No newline at end of file
