У меня два SQL-запроса, оба возвращают
выбор раунда (конвертировать (float, '24367.723'), 2) Результат: 24367,72
выбор раунда (конвертировать (float, '24367.723'), 2)
Результат: 24367,72
Второе:
выберите конвертировать (varchar (20), округлить (конвертировать (float, '24367.723'), 2)) Результат: 24367,7
выберите конвертировать (varchar (20), округлить (конвертировать (float, '24367.723'), 2))
Результат: 24367,7
Почему при возврате второго запроса исключается последняя цифра после преобразования в varchar
Заранее спасибо
Не указав параметр стиля для функции преобразования, вы получите стиль по умолчанию (0).
т.е. это эквивалентно
select convert(varchar(20),round(convert(float,'24367.723'),2), 0)
Стиль по умолчанию для преобразования из числа с плавающей точкой в varchar отображает максимум 6 цифр.
Не используйте поплавки, используйте точные цифры. Как то так
convert(varchar(20), convert(numeric(20,2), '24367.72'))
При работе с плавающей точкой функция STR () обычно дает лучшие результаты в соответствии с MSDN, поскольку у вас больше контроля.
* 1003 Е.Г. *
select str(convert(float,'24367.723'),8, 2)