Округление SSRS 2005 (foo, 0) округляет десятичное значение от 12,6 до 12 вместо 13 - PullRequest
2 голосов
/ 10 марта 2011

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

В одном случае у меня есть десятичное (9,2) значение, в котором хранятся часы, которые мне нужно отобразить как минуты с нулевыми десятичными разрядами.

Round(foo*60, 0), где foo = .01 (что составляет 0,6 при умножении на 60), выдает 1, как я и ожидал.

Round(foo*60, 0), где foo = .21 (что составляет 12,6 при умножении на 60), выводит 12 вместо 13.

Почему? Как я могу заставить его последовательно использовать стандартное округление 4/5?

Ответы [ 2 ]

0 голосов
/ 13 мая 2011

Взгляните на этот вопрос о стеке:

Служба отчетов SQL Server Функция округления ()

Вы видите логику округления до четности, а не округление средней точки.

Эта статья в Википедии содержит все подробности о округлении: Статья о округлении Википедии

0 голосов
/ 10 марта 2011

Я не могу воспроизвести ваши результаты. Возможно, вы скрываете некоторые другие важные детали.

Declare @foo Decimal(9,2)
Set @foo = 0.21

Select Round(@Foo * 60, 0), @foo * 60

Выход из вышеприведенного кода составляет 13,00 и 12,60 соответственно.

Возможно ли, что столбец Foo является плавающей точкой или что в столбце foo больше точности, чем вы ожидаете? Например, следующий код выдает 12 (вместо 13).

Declare @foo float
Set @foo = 0.208

Select Round(@Foo * 60, 0), @foo * 60, Round(@foo, 2)
...