In general use the float or real data types only if the precision provided by decimal (up to 38 digits) is insufficient
so generally because the precision provided by decimal is [10E38 ~ 38 digits] if your number can fit in it, do not look at float.
some more Geekologie…
- numeric = decimal (5 to 17 bytes) (Exact Numeric Data Type)
- will map to Decimal in .NET
- both have (18, 0) as default (precision,scale) parameters in SQL server
- scale = maximum number of decimal digits that can be stored to the right of the decimal point.
- kindly note that money(8 byte) and smallmoney(4 byte) are also exact and map to Decimal In .NET and have 4 decimal points(MSDN)
- decimal and numeric (Transact-SQL) – MSDN
- real (4 byte) (Approximate Numeric Data Type)
- will map to Single in .NET
- The ISO synonym for real is float(24)
- float and real (Transact-SQL) – MSDN
- float (8 byte) (Approximate Numeric Data Type)
- will map to Double in .NET
- All exact numeric types always produce the same result, regardless of which kind of processor architecture is being used or the magnitude of the numbers
- The parameter supplied to the float data type defines the number of bits that are used to store the mantissa of the floating point number.
- Approximate Numeric Data Type usually uses less storage and have better speed (up to 20x) and you should also consider when they got converted in .NET