You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Where *n* is the number of bits that are used to store the mantissa of the **float** number in scientific notation and, therefore, dictates the precision and storage size. If *n* is specified, it must be a value between **1** and **53**. The default value of *n* is **53**.
36
37
@@ -52,21 +53,28 @@ The [!INCLUDE[ssNoVersion](../../includes/ssnoversion-md.md)] **float**[**(n)**]
52
53
|---|---|---|
53
54
|**float**|- 1.79E+308 to -2.23E-308, 0 and 2.23E-308 to 1.79E+308|Depends on the value of *n*|
54
55
|**real**|- 3.40E + 38 to -1.18E - 38, 0 and 1.18E - 38 to 3.40E + 38|4 Bytes|
56
+
57
+
The float and real data types are known as approximate data types. The behavior of float and real follows the [IEEE 754](https://ieeexplore.ieee.org/document/4610935) specification on approximate numeric data types.
58
+
59
+
Approximate numeric data types don't store the exact values specified for many numbers; they store a close approximation of the value. For some applications, the tiny difference between the specified value and the stored approximation isn't relevant. For others though, the difference is important. Because of the approximate nature of the float and real data types, don't use these data types when exact numeric behavior is required. Examples of precise numeric values applications include financial or business data, in operations involving rounding, or in equality checks. In those cases, use the integer, decimal, numeric, money, or smallmoney data types.
60
+
61
+
Avoid using float or real columns in WHERE clause search conditions, especially the = and <> operators. It's best to limit float and real columns to > or < comparisons.
62
+
63
+
## Converting float and real data
64
+
65
+
Values of **float** are truncated when they're converted to any integer type.
55
66
56
-
## Converting float and real data
57
-
Values of **float** are truncated when they are converted to any integer type.
58
-
59
-
When you want to convert from **float** or **real** to character data, using the STR string function is usually more useful than CAST( ). This is because STR enables more control over formatting. For more information, see [STR (Transact-SQL)](../../t-sql/functions/str-transact-sql.md) and [Functions (Transact-SQL)](../../t-sql/functions/functions.md).
67
+
When you want to convert from **float** or **real** to character data, using the STR string function is typically more useful than CAST( ). The reason is that STR() enables more control over formatting. For more information, see [STR (Transact-SQL)](../../t-sql/functions/str-transact-sql.md) and [Functions (Transact-SQL)](../../t-sql/functions/functions.md).
60
68
61
69
Prior to [!INCLUDE[ssSQL16](../../includes/sssql16-md.md)], conversion of **float** values to **decimal** or **numeric** is restricted to values of precision 17 digits only. Any **float** value less than 5E-18 (when set using either the scientific notation of 5E-18 or the decimal notation of 0.000000000000000005) rounds down to 0. This is no longer a restriction as of [!INCLUDE[ssSQL16](../../includes/sssql16-md.md)].
0 commit comments