MySQL is trimming my numbers and I can't figure out why
Sounds like your PHP code is converting the string to a integer and chopping off the decimal place. Possibly in the prepare statement. You could try binding the param as a string, or possibly a cast as a (float). 

Example PHP: 

  $number='2.90';
  echo (int)$number;


Will output 2

$number='2.90';
echo (float)$number;


Will output 2.9

I would just leave it as a %s string.