Re: T-SQL ROUND(decimal, int) vs C# Round(Decimal, Int32)
- From: Erland Sommarskog <esquel@xxxxxxxxxxxxx>
- Date: Mon, 30 Jan 2006 22:50:56 +0000 (UTC)
Matt (mattmorg55@xxxxxxxxx) 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@xxxxxxxxxxxxx
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
.
- References:
- Prev by Date: Re: SQL Server 2000 query time out option, what does it do?
- Next by Date: Re: ORDER BY in VIEW not working
- Previous by thread: Re: T-SQL ROUND(decimal, int) vs C# Round(Decimal, Int32)
- Next by thread: UPDATE on a column with a set default
- Index(es):
Relevant Pages
|