Index: uc_donation.module
===================================================================
--- uc_donation.module	(revision 105)
+++ uc_donation.module	(working copy)
@@ -326,6 +326,16 @@
   $prev_data = $data['data'];
   unset($data['data']);
 
+  // Fix by bratanon <http://drupal.org/user/464598> 2009-10-06
+  // The original datatype here is float, and that will result in i.e. '20.00' is '20' here.
+  // But we need a string here, that matches the string in the database. 
+  // So we add '.00' if the string length is smaller or equal to 2.
+  if(strlen($data['donate_amount']) <= 2) {
+    $data['donate_amount'] = $data['donate_amount'].'.00';
+  }
+  // Convert the float to a string.
+  settype($data['donate_amount'], 'string');
+
   if ($qty < 1) {
     uc_cart_remove_item($nid, $cid, $data);
   }
