Even for your first line, itβs enough to show the problem:
declare @a decimal(18,15) = 45/448.2
print @a
gives
---------------------------------------
0.100401000000000
This is due to data types. When you say
448.2
( ) decimal, ,
Transact-SQL , . , 12.345 5 3.
448.2 - decimal(4,3). 45 integer, decimal 10 0. ,
Operation Result precision Result scale
e1 / e2 p1 - s1 + s2 + max(6, s1 + p2 + 1) max(6, s1 + p2 + 1)
10 - 3 + 0 + max(6, 0 + 3 + 1) max(6, 0 + 3 + 1), 13 6.
6 , .
, , ; , :
, :
declare @a decimal(18,15) = 45/448.2e0
select @a
---------------------------------------
0.100401606425703
:
declare @a decimal(18,15) = 45/cast(448.2 as decimal(18,10))
select @a
0.100401606425703