||SQL Server Tips by Gama and Naughter
Decimal and numeric
Both names mean the same. The statement decimal (p, s) with p as
precision and s as scale represents a decimal number with up to p
digits and s of them will be on the right of the decimal point.
DECLARE @d decimal(8, 3)
SELECT @d, DATALENGTH(@d)
SELECT CAST(@d as binary(8))
Internally, the variable needs three more bytes to store extra data
plus the five for the data:
4-sign, 00 for negative and 01 for positive numbers.
5 to 8-value 4661BC00
4661BC00 reversed is 00BC6146, that is, 12345670 in decimal. With a
scale three, it becomes 12345.670, this is how decimals are stored.
The maximum precision goes from -10^38 +1 through 10^38 –1.
The above book excerpt is from:
Turbocharge Database Performance with C++ External Procedures
Joseph Gama, P. J. Naughter