Я пытаюсь преобразовать значение float в строковое значение с точностью до 2 десятичных чисел, используя функцию STR
. Хорошо работает, но я получаю неправильный номер при попытке конвертировать значение 1,525. Я должен получить 1.53, вместо этого получим 1.52.SQL Float to VARCHAR using STR
Does not work
Select rtrim(ltrim(Str(1.525, 10,2)))
1.52
Works for these
Select rtrim(ltrim(Str(1.225, 10,2)))
1.23
Select rtrim(ltrim(Str(1.325, 10,2)))
1.33
Select rtrim(ltrim(Str(1.515, 10,2)))
1.52
Select rtrim(ltrim(Str(1.535, 10,2)))
1.54
UPDATE
Я использовал FORMAT(floatValue, 'N2')
и это правильно работает. Любые комментарии об использовании этой функции, которые поддерживаются в 2012 году. Также второй аргумент можно построить динамически для поддержки различной точности.
Какую версию SQL Server вы используете? Я получаю разные результаты, чем те, которые вы опубликовали с использованием 2008. –
Почему вы используете 'FLOAT'? 'SELECT CONVERT (десятичный (12,2), '1.525');' –
FLOAT не является точным - вы можете использовать типы NUMERIC или DECIMAL, если хотите точный – Hogan