Ошибка при округлении до ближайшего 10 в выражении SSRS - PullRequest
0 голосов
/ 09 ноября 2018

Я искал существующие темы и не могу понять, где я делаю это неправильно ...

Я пытаюсь получить среднее значение двух значений, а затем округлить среднее значение до ближайшего ДЕСЯТИ (10).

Мое выражение:

=ROUND((Fields!Cyl1Stress.Value + Fields!Cyl2Stress.Value) / 2, -1)

Вышеприведенное возвращает ошибку.

Округление до ближайшего TENTH работает нормально, но как только я меняю 1 на -1, я получаю ошибку.

Где Cyl1Stress.Value = 7600 и Cyl2Stress.Value = 7490.

=ROUND((Fields!Cyl1Stress.Value + Fields!Cyl2Stress.Value) / 2, **1**) 

Код выше возвращает 7545.

Но мне нужно, чтобы результат был 7550, поэтому я изменил формулу на:

=ROUND((Fields!Cyl1Stress.Value + Fields!Cyl2Stress.Value) / 2, **-1**). 

Этот возвращает ошибку.

Не могу понять, почему это не работает!

Свойства текстового поля: числовые, 0 десятичных знаков.

1 Ответ

0 голосов
/ 09 ноября 2018

Не думаю, что вы можете использовать отрицательное значение для аргумента Digits Round. документация указывает:

Количество дробных цифр в возвращаемом значении. Для десятичных значений он может варьироваться от 0 до 28. Для двойных значений - от 0 до 15.

Вы можете выполнить то, что вы хотите сделать, разделив значение на 10, округлив до ближайшего целого числа, а затем умножив на 10. Также обратите внимание, что если вы хотите, чтобы значение, оканчивающееся на 5, округлялось до Следующие 10 вам нужно будет добавить третий аргумент к Round, чтобы указать это, в противном случае я считаю, что поведение по умолчанию округляется до ближайшего четного числа. Это приведет к тому, что ваш пример округлится до 7540 вместо 7550.

Это выражение должно быть тем, что вы ищете:

=ROUND(((Fields!Cyl1Stress.Value + Fields!Cyl2Stress.Value) / 2) / 10, 0, MidpointRounding.AwayFromZero) * 10

Для ваших примеров значений это превращает 7545 в 754,5, округляет до ближайшего целого числа и округляет его от нуля вместо ближайшего четного числа (755), затем умножает на 10 (7550).

...