|
Posted by Erland Sommarskog on 01/31/06 00:50
Matt (mattmorg55@gmail.com) writes:
> 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."
Unbelievable! I thought that this was just something that was taught
out of a whim for a while in Swedish schools when I was a kid. (Since
long replaced. A colleague who's 15 years younger than me was completely
baffled when she heard of the concept.)
> 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?
Write your own rounding function in any of the languages. If you are on
SQL 2000, it be may be better for performance to do it in C#. If you are
on SQL 2005, you would still do it in C#, but you could use the function
in SQL Server.
In fact, we have done something of the kind, although our problem was
different. We needed to round floating-point numbers "intelligently".
--
Erland Sommarskog, SQL Server MVP, esquel@sommarskog.se
Books Online for SQL Server 2005 at
http://www.microsoft.com/technet/prodtechnol/sql/2005/downloads/books.mspx
Books Online for SQL Server 2000 at
http://www.microsoft.com/sql/prodinfo/previousversions/books.mspx
[Back to original message]
|