powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / отличие округления от преобразования
7 сообщений из 7, страница 1 из 1
отличие округления от преобразования
    #38307871
Nakeshi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите пожалуйста, есть отличие округления до, например 3 знаков после запятой с помощью round и преобразованием типа к decimal(18, 3) ?

declare @f float
set @f = 1055.28885 / 7

SELECT @f
--150,75555
SELECT ROUND(@f, 3);
--150,756
SELECT cast(@f as decimal(18, 3));
--150,756
...
Рейтинг: 0 / 0
отличие округления от преобразования
    #38307882
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
SELECT ROUND(@f, 3) r1, cast(@f as decimal(18, 3)) r2
  into test_table

select COLUMN_NAME, DATA_TYPE 
  from INFORMATION_SCHEMA.COLUMNS 
 where table_name = 'test_table'
...
Рейтинг: 0 / 0
отличие округления от преобразования
    #38307921
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NakeshiПодскажите пожалуйста, есть отличие округления до, например 3 знаков после запятой с помощью round и преобразованием типа к decimal(18, 3) ?

declare @f float
set @f = 1055.28885 / 7

SELECT @f
--150,75555
SELECT ROUND(@f, 3);
--150,756
SELECT cast(@f as decimal(18, 3));
--150,756
Код: sql
1.
SELECT ROUND(@f, 3, 1);


Код: plaintext
--150.755
...
Рейтинг: 0 / 0
отличие округления от преобразования
    #38307951
Nakeshi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Усечение не требуется, и тип не важен.
Корректно ли во всех случаях будет проходить округление, если я воспользуюсь просто преобразованием к decimal(18, 3) ?
...
Рейтинг: 0 / 0
отличие округления от преобразования
    #38308081
Фотография Shakill
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NakeshiУсечение не требуется, и тип не важен.
Корректно ли во всех случаях будет проходить округление, если я воспользуюсь просто преобразованием к decimal(18, 3) ?
вот например
Код: sql
1.
2.
3.
DECLARE @a float = 1.0005, @b float = 1.0015;
SELECT @a, @b
SELECT CAST(@a AS decimal(18, 3)) AS a, CAST(@b AS decimal(18, 3)) AS b; -- a = 1.000, b = 1.002 
...
Рейтинг: 0 / 0
отличие округления от преобразования
    #38308142
Nakeshi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да вроде ничем не отличается от
SELECT round(@a, 3) AS a, round(@b, 3) AS b
...
Рейтинг: 0 / 0
отличие округления от преобразования
    #38308151
Фотография Shakill
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nakeshi, ну если устраивает, то и хорошо
вообще про действие cast написано в хелпе, когда усекается, а когда округляется.
Функции CAST и CONVERTfloat -> numeric
Округление
Точность преобразования значений float, которые используют экспоненциальное представление, к decimal или numeric ограничена только 17 знаками. Любое значение с точностью, превышающей 17 знаков, округляется до нуля.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / отличие округления от преобразования
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]