При создании выражения в SSRS 2016 Round () функция третьего параметра выдает ошибки - PullRequest
0 голосов
/ 03 января 2019

Что я делаю неправильно при использовании функции Round ()? В конце я пытаюсь вернуть число, чтобы показать цифру в долларах (не тип данных, а просто формат $ ####. ## в качестве примера).

Когда я использую функцию Round () следующим образом, она работает нормально и округляется ...

=Round(125.239, 2)

Выход будет 125,24

Функция Round (), которую я использую в выражении, выглядит следующим образом ...

=Round(125.239, 2, 1)

По какой-то причине это выдает ошибку.

Параметр соответствия аргумента 'mode' сужается от 'Integer' до 'System.MidpointRounding'

Что я делаю не так? Чтобы добавить к моему вопросу, я должен сказать, что я пытаюсь использовать «1» в качестве третьего параметра, чтобы ROUND DOWN вывод получал «125.23» в качестве конечного результата.

Ответы [ 2 ]

0 голосов
/ 03 января 2019

Можем ли мы увидеть больше вашего кода, работает ли он, если вы просто введете:

SELECT ROUND(125.239, 2, 1)

Округление вниз - это скорее усечение.Функция ROUND должна работать для вас, но если вы просто используете:

ROUND(125.239, 2, 1)

Она вернет 125.230.Если вы хотите, чтобы он был правильно отформатирован, я бы сделал это так:

CAST(ROUND(125.239, 2, 1) AS DECIMAL(18,2))

Это возвращает 125.23.Это укроет число до 2 десятичных знаков со следующим нулем, а затем отформатирует его так, как вы хотите.

0 голосов
/ 03 января 2019

SSRS использует функции VB.Net, поэтому вместо этого попробуйте:

=Round(125.239, 2, MidpointRounding.AwayFromZero)

Ссылка: MidpointRounding Enum

Редактировать:

На основекомментарий ОП о том, что на самом деле следует, это значение, соответствующее двум десятичным разрядам, а не округленное.Это может быть достигнуто следующим образом:

=Floor(125.239*100) / 100
...