Sql два знака после запятой

Sql два знака после запятой

0 SxChoc [2017-07-11 11:18:00]

У меня простой расчет (910/28 = 3.5), и я пытаюсь выполнить это в SQL-запросе:

Но ответ выйдет в 32.00, я, очевидно, пропустил что-то простое, может кто-то пощадить момент, чтобы указать на мою ошибку, пожалуйста?

4 ответа

Принимая фактор 910.0/28 SQL Server сохранит десятичную точность. Затем сделайте свой прилив десятичным с двумя местами. Кстати, насколько я знаю, CONVERT обычно принимает только два параметра при преобразовании числа в десятичное.

мы можем использовать этот запрос для динамического значения из таблицы:

Мне нужно преобразовать минуты в часы, округленные до 2 знаков после запятой.Мне также нужно отображать только до 2 чисел после десятичной точки. Поэтому, если у меня есть минуты как 650.Тогда часов должно быть 10.83

вот что у меня пока есть:

но в этом случае, если мои минуты,скажем, 630 часов — это 10.5000000. Но я хочу, чтобы это было только 10.50 (после округления). Как мне этого достичь?

12 ответов

не могли бы вы не бросили свой результат как numeric(x,2) ? Где x

Как и в SQL Server 2012, Вы можете использовать встроенный функции format:

Рассмотрим такую задачу.

Посчитать средний размер жесткого диска ПК. Результат представить с двумя знаками после десятичной точки.

avg_hd
13.6666666666667

Чтобы выполнить требуемое округление можно воспользоваться функцией ROUND :

avg_hd
13.67

Второй аргумент этой функции как раз указывает число десятичных знаков результата.

Как видно, результат был округлен по арифметическим правилам. Однако у функции ROUND есть третий необязательный аргумент, который говорит о том, округлять ли результат (значение 0 — принимается по умолчанию) или отбрасывать цифры сверх удерживаемых (ненулевое значение).

Т.е. если мы перепишем наш запрос так:

avg_hd
13.66
Читайте также:  Asus k012 как прошить

Кстати, округлять можно до любого знака, не только десятичного. Например, чтобы округлять до десятков, сотен и т.д., используются отрицательные значения второго аргумента. Следующий запрос округляет результат до десятков.

avg_hd
10

Следует отметить, что функция ROUND выполняет округление, но не меняет тип результата. Т.е. если аргумент будет иметь тип dec(12,6), то и результат округления будет того же типа, а именно,

avg_hd
13.670000

В этом легко убедиться, выполнив запрос

Поэтому, если вы хотите избавиться от хвостовых нулей, используйте преобразование к нужному вам типу, например, dec(12,2). Тогда нам и функция ROUND не потребуется. 🙂

Ссылка на основную публикацию
Adblock detector