I just ran into this problem myself while updating a Delphi 7 app to Delphi 10.1. One solution is to cast the FLOAT field as a DOUBLE PRECISION. That way the field type in the ClientDataSet's xml ends up as "r8" (TFloatField) rather than "r4" (TSingleField).
The other solution is to recreate the TFields (and/or TFieldsDefs) in the application so that the expected field type is TSingleField instead of TFloatField like before.