|
Posted by Hugo Kornelis on 01/31/06 00:23
On 30 Jan 2006 08:42:43 -0800, Matt wrote:
>Anybody noticed that SQL Server rounds up if the value is half way
>between two rounded values, but C#'s Decimal.Round(Decimal,Int32)
>rounds to nearest even number?
>
>>From MSDN: "When d is exactly halfway between two rounded values, the
>result is the rounded value that has an even digit in the far right
>decimal position. For example, when rounded to two decimals, the value
>2.345 becomes 2.34 and the value 2.355 becomes 2.36. This process is
>known as rounding toward even, or rounding to nearest."
>
>I perform the same calculation sometimes on the web server in C# and
>sometimes at the database in T-SQL, but want to get the same result
>from both calculations. Could anybody offer any strategies for dealing
>with this?
Hi Matt,
This method of rounding is called "bankers rounding". Here's a link to a
previous discussion about it, including some techniques to do this in
SQL Server (warning - long URL, might wrap)
http://groups.google.com/group/microsoft.public.sqlserver.programming/browse_frm/thread/b47c6ab25aacb7da/85e9e40e0a7f6f32?lnk=st&q=bankers+rounding+sql+server&rnum=1&hl=en#85e9e40e0a7f6f32
--
Hugo Kornelis, SQL Server MVP
[Back to original message]
|