The mappings in the oracle 10g driver are based on ODP.NET's 10.1.x.y mappings.
Ok I see your point. The routine indeed shouldn't be ran when the type is a FLOAT, only when it's a NUMBER.
To work around it, define your type as a NUMBER(x,y) till this is fixed in the driver.
All values are stored in a type object, because there's just one parameter for the value, Currentvalue, and that has to contain all possible types, hence object.
(edit): Ok, had some serious trouble with my SqlTools application to reach my oracle box, but now I have it working again, so I could run a test!
. I reproduced the problem: a FLOAT typed field indeed resolved to a DECIMAL, which is of course wrong.
I'll fix this in the driver. If you need it TODAY, you can simply change the line in DBType2NETType() where it tests for FLOAT at the top of that routine into a check for solely number types, which should result in DOUBLE typed fields after a refresh of the catalog. (so after the driver has been updated, the refresh has to be done.). I hope to have this fixed by mid-day.