Вопрос

Я на SQL Server 2005, и я пытаюсь выяснить проблему округления с типами данных Smallmoney.

Например, значение 1.2849, когда он округлен до 2 десятичных знаков, производит 1,28, но разве оно не должно производить 1,29? Например, 9 раундов на 1,285, 5 раундов на 1,29.

Вот пример:

SELECT
    'CAST(1.2849 AS SMALLMONEY)' OPERATION, CAST(1.284948 AS SMALLMONEY) RESULT
UNION
SELECT
    'ROUND(CAST(1.2849 AS SMALLMONEY), 2)', ROUND(CAST(1.284948 AS SMALLMONEY), 2)
UNION
SELECT
    'ROUND(ROUND(CAST(1.2849 AS SMALLMONEY), 3), 2)', ROUND(ROUND(CAST(1.2849 AS SMALLMONEY), 3), 2)
Это было полезно?

Решение

Я вполне уверен, что это просто смотрит на третью десятичную цифру ... и это 4, так что она окружает до 1,28.

Уточните - это выглядит на цифру, которая больше, чем вы округлите ... так что это выглядит третьим, потому что вы округлите второе.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с dba.stackexchange
scroll top