Anuj Mehta Ответов: 2

Sql round mehthod vs C# round метод, когда последнее значение равно 5


Результат округления кода C# и результат округления SQL Sp отличаются, когда последнее значение равно 5

Мой код на языке Си#

double meanObject;

double Upper = 1.8415;

meanObject = Math.Round((Convert.ToDouble(Upper)), 3);

==> Result meanObject = 1.842 <==


Мой код в SQL SP

Declare @Upper float = 1.8415

select Round(@Upper,3)

==> Result is = 1.841  <==



I want Same Answer in both
Ex.
C# Code =  1.842
SQL SP  =  1.842  (I get the wrong result in SQL SP : 1.841)


Что я уже пробовал:


в C# я попробовал
double meanObject;
double Upper = 1.8415;

meanObject = Math.Round((Convert.ToDouble(Upper)), 3);
Label1.Text = meanObject.ToString(); //Result 1.842


в SQL Sp я попробовал

Declare @Upper float = 1.8415

select Round(@Upper,3)



phil.o

Почему вы пытаетесь преобразовать в двойное значение то, что уже объявлено как двойное значение?

Anuj Mehta

Я добавил его только для проверки кода.

Без преобразования результат будет таким же (без изменений)
двойной верх = 1,8415;
double meanObject = математика.Круглый (Верхний), 3);

Результат = 1.841

2 Ответов

Рейтинг:
2

Anuj Mehta

Declare @Upper money = 1.8415

select Round(@Upper,3)

Prob Solved using changing datatype to money 
==> SQL Result is = 1.842  <==


Спасибо Вам всем за ответ


Maciej Los

Отлично, есть 5!

Рейтинг:
0

Herman&lt;T&gt;.Instance

Причина в этом .NET использует bankersrounding.

Видеть здесь[^] или Округление Банкиров – Сказочные Приключения В Кодировании[^]


Maciej Los

5ed!

Herman&lt;T&gt;.Instance

Спасибо!