Несогласованность TSQL Round ()?

Наша проблема сводится к следующим двум операторам:

select convert(float, (convert(float,5741.61)/convert(float, 196.00)) * convert(float,14.00)) as unrounded, round(convert(float, (convert(float,5741.61)/convert(float, 196.00)) * convert(float,14.00)), 2)  as roundedTo2dp

select convert(float, 410.115) as unrounded, ROUND( convert(float, 410.115), 2) as roundedTo2dp

Первый оператор использует числа с плавающей запятой для вычисления значения 410,115, а также этот результат с округлением () до 2 десятичных знаков. Округленное значение составляет 410,11.

Второй оператор использует значение с плавающей запятой 410,115, а также округляет его до 2 десятичных знаков. Округленный результат получается как 410,12.

Почему один округляется в меньшую сторону, а другой в большую, когда округляемое значение одинаково?

Как я могу округлить первый оператор до 410,12?

РЕДАКТИРОВАТЬ: извинения за форматирование - stackoverflow не показывает никакого форматирования на этом компьютере (очень странно).

6
задан Femaref 21 July 2011 в 13:44
поделиться