Floats are stored as strings so they are exact numbers, like decimal type, but maybe if someone types a DBF fields as float they are expecting a float so maybe just return a float? Currently returns a double, would have to to make a breaking-ish change, but it's not right either a float or a decimal make sense.
Double fields are actually stored as doubles, and could return doubles but aren't currently supported.