• YOu may folow the money :hehe: by tracing intermediate results:

    select (1400.05 / 4232.33 ), (1400.05 / 4232.33 ) * 4180.06, round((1400.05 / 4232.33 ) * 4180.06 ,2) --Statement 1

    declare @v1 smallmoney = 1400.05,

    @v2 smallmoney = 4232.33,

    @v3 smallmoney = 4180.06

    select @v1, (@v1 / @v2 ), (@v1 / @v2 ) * @v3, round((@v1 / @v2 ) * @v3 ,2) --Statement 2

    select @v1*1.0, (@v1*1.0 / @v2 ) ,(@v1*1.0 / @v2 ) * @v3 , round((@v1*1.0 / @v2 ) * @v3 ,2) --Statement 3

    For most accurate calculations always use FLOAT data type (unless you need to handle more than 15 digigts, than use "big" decimals).

    Try use FLOAT in your example and you'll see that 4 digit returned by DECIMAL calculation is incorrect.

    Fortunateluy for you, it's beyond rounding precision.

    _____________
    Code for TallyGenerator