Разделите целые числа и округлите до 3 десятичных знаков одним броском? - PullRequest
0 голосов
/ 27 октября 2018

Есть ли способ разделить два целых числа и округлить до 3 десятичных знаков только с одним приведением / преобразованием?

Все примеры я вижу от convert до decimal, затем round.Некоторые приводят как числитель, так и знаменатель и т. Д. Я видел round с floor или ceiling и т. Д.

Я просто хочу использовать одно приведение, и все готово.

Например, 1/3 would be 0.333.5/3 is 1.667

Я делаю это, чтобы привести результат к varchar.

1 Ответ

0 голосов
/ 27 октября 2018

Деление двух значений int t-sql имеет только два возможных результата:

  • ошибка 8134 (деление на ноль)
  • снова значение int

Достаточно привести один из операндов к numeric:

select round(1.0/3,3,0)

Чтобы избежать конечных нулей, еще один способ:

select cast(1.0/3 as decimal(18,3))

Это, конечно, работает только с числовыми литералами. Если у вас есть столбец или значение параметра, cast все еще необходим.

Эта слабая попытка кодового гольфа сбивает еще одного персонажа:

select convert(decimal(9,3),1.0/3)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...