I’m sorry this has delayed things for you, Ben.
There’s a short term fix and a long term fix. The long term fix is adding some display options to the field to handle the number of decimals to show.
Without getting into the pros/cons of float fields vs. real/decimal fields, what I’d suggest doing in the short term is changing the relevant field type to a decimal field. In the long term, I am leaning toward using decimal(30, 10) - which gives us a possible 10 decimal places. And is fairly arbitrary, but validation can pick up on preventing input that exceeds the max. That will also give 30 characters total.
The glitch with doing this now- you will end up with 10 decimal places. So for the short term and given the particular needs of the site? I’d go with decimal(30,2).
So- backup your exp_channel_data table and make sure you have a good copy. Find the field id of the field(s) that needs changing. Then in phpmyadmin or something similar run:
ALTER TABLE exp_channel_data CHANGE field_id_x field_id_8 decimal(30, 2)
Note- replace the ‘x’ in field_id_x with the correct field id number.
There’s one more change you may/may not want to make. In order for numbers to go in as null rather than 0- in Api_channel_entries around line 1790:
elseif ($field->type == 'int' && isset($cust_fields[$field->name]) && $cust_fields[$field->name] === '')
change to
elseif (($field->type == 'int' OR $field->type == 'real') && isset($cust_fields[$field->name]) && $cust_fields[$field->name] === '')
Again- I apologize this has jammed up the progress of your site. The fix for a single instance is fairly easy, but a longer term fix has proved more daunting. And is truthfully, still not firm. But switching to a decimal won’t interfere with upgrades at all.