Мой вопрос концептуален.
В приведенном ниже фрагменте кода я ожидаю получить точно такой же результат для всех "круглых" активаций.
Однако при использовании константы в качестве аргумента результат отличается от использования вычисленного или сохраненного значения.
В документации я не нашел ни одного комментария, который бы помог мне понять причину различия.
В ответ на подобное вопрос (sql серверная функция раунда не работает хорошо ), я был отослан к отличной статье https://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html, но в следующем примере все случаи "float", поэтому Я не думаю, что есть причины для разных результатов.
-
DECLARE @value FLOAT;
SET @value = 4255.0;
CREATE TABLE TESTTABLE (
FLOAT_VALUE FLOAT
)
INSERT INTO TESTTABLE(FLOAT_VALUE) VALUES (@value);
SELECT 0.015 * 4255.0 AS ORIGINAL_VALUE,
ROUND(0.015 * 4255.0, 2) AS ROUND_FROM_CONSTANT,
ROUND(0.015 * CONVERT(FLOAT, 4255.0), 2) AS ROUND_FROM_CAST,
ROUND(0.015 * @value, 2) AS ROUND_FROM_VARIABLE,
ROUND(0.015 * FLOAT_VALUE, 2) AS ROUND_FROM_FIELD
FROM TESTTABLE