I seem to have it sussed. I think I was publishing a field in an InfoPath form that was defined as a decimal - range 0.1 to 1.0 - to a default column in SharePoint that was defined differently. SharePoint was rounding down any value in my field less than 0.5 to 0 and rounding up and value above 0.5 to 1.
I created a new column in SharePoint, configured it as a percentage, then published the same data to the new column.