У меня есть представление, которое должно возвращать тип decimal для столбцов, хранящихся как float.Преобразование float в десятичный в SQL Server 2008
я могу бросить каждый столбец в десятичную следующим образом:
, CAST(Field1 as decimal) Field1
Проблема с этим подходом является то, что десятичные по умолчанию 18,0, который автоматически округляется столбцы с плавающей точкой 0. Я хотел бы сохранить точность до 12 знаков после запятой.
Однако, если я делаю это:
, CAST(Field1 as decimal(12,12)) Field1
Я получаю сообщение об ошибке выполнения:
"Arithmetic overflow error converting float to data type numeric"
колонка поплавка определяется как длина: 8 Точность: 53 в таблице. Я ничего не могу изменить о таблице.
Каков правильный способ отличить десятичную оценку от потери десятичной точности?
Мое предложение состоит в том, что вы прекращаете хранить данные как float, поскольку это неточный тип данных, и вы получите ошибки округления, если вы выполняете вычисления на нем. – HLGEM