use the float or real data types only if the precision provided by decimal (up to 38 digits) is insufficient
- Approximate numeric data types(see table 3.3) do not store the exact values specified for many numbers; they store an extremely close approximation of the value. (Technet)
- Avoid using float or real columns in WHERE clause search conditions, especially the = and <> operators. It is best to limit float and real columns to > or < comparisons. (Technet)
so generally choosing Decimal as your data type is the best bet if
- your number can fit in it. Decimal precision is 10E38[~ 38 digits]
- smaller storage space (and maybe calculation speed) of Float is not important for you
- exact numeric behavior is required, such as in financial applications, in operations involving rounding, or in equality checks. (Technet)
- Exact Numeric Data Types decimal and numeric – MSDN
- numeric = decimal (5 to 17 bytes)
- 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.
- money(8 byte) and smallmoney(4 byte) are also Exact Data Type and will map to Decimal in .NET and have 4 decimal points (MSDN)
- Approximate Numeric Data Types float and real – MSDN
- real (4 byte)
- will map to Single in .NET
- The ISO synonym for real is float(24)
- float (8 byte)
- will map to Double in .NET
![Exact Numeric Data Types](https://i.stack.imgur.com/HGYoK.png)
![](https://readforlearn.com/wp-content/uploads/2021/12/HGYoK.png)
- 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
- What is the difference between Decimal, Float and Double in C#
- Decimal vs Double Speed
- SQL Server – .NET Data Type Mappings (From MSDN)
main source : MCTS Self-Paced Training Kit (Exam 70-433): Microsoft® SQL Server® 2008 Database Development – Chapter 3 – Tables, Data Types, and Declarative Data Integrity Lesson 1 – Choosing Data Types (Guidelines) – Page 93