none
Decimal datatype truncated instead of rounded RRS feed

  • Question

  • I have a DB column of decimal(6,1)
    When saving a record with LINQ to SQL, it truncates the value instead of rounding.

    So for example, if a parameter passed to this column in the generated LINQ to SQL query has this value...
    -- @p15: Input Decimal (Size = 0; Prec = 6; Scale = 1) [222.259]
    the data will show up in the DB as 222.2 instead of 222.3

    Then, if I change the same column in the DB to be decimal(7,2) and I don't regenerate the LINQ to SQL classes, saving a record using LINQ will still truncate...
    -- @p15: Input Decimal (Size = 0; Prec = 6; Scale = 1) [222.259]
    the data will show up in the DB as 222.20 instead of 222.26 (or 222.30)

    Does anyone know if this is the correct behavior for LINQ? Or is the SqlServer provider? It doesn't behave the same way as writing a query by hand in mgmt studio which is why I'm confused on why it is truncating instead of rounding.

    The following query in mgmt studio...
    UPDATE TheTable SET TheDecimalColumn = 222.259
    will set the val to 222.3 when it is (6,1) and 222.26 when it is (7,2)


    Thanks
    Wednesday, September 24, 2008 12:13 AM

Answers