Подтвердить что ты не робот

Кастинг как десятичный и округлый

так что, если вы

CAST(field1 as decimal) field1

это автоматически добавит округление.

оригинал определяется как:

field1 type: float length: 8 prec: 53

Мне нужно отдать его десятичному, потому что мне нужен мой слой Framework Entity Framework, чтобы сгенерировать это поле как десятичное (вместо двойного)

Есть ли способ сделать его десятичным, чтобы он сохранял оригинальную точность и не округлялся?

Мне бы хотелось не объявлять точность в литье, потому что 1. существует 100 полей, связанных с различной точностью, и 1. если базовая таблица изменится в будущем, это может привести к появлению непредвиденных ошибок, и 3. затрудняет управление

4b9b3361

Ответ 1

Вы пробовали:

SELECT Cast( 2.555 as decimal(53,8))

Это вернет 2.55500000. Это то, что вы хотите?

UPDATE:

Очевидно, вы также можете использовать SQL_VARIANT_PROPERTY для определения точности и масштаба значения. Пример:

SELECT SQL_VARIANT_PROPERTY(Cast( 2.555 as decimal(8,7)),'Precision'),
SQL_VARIANT_PROPERTY(Cast( 2.555 as decimal(8,7)),'Scale')

возвращает 8|7

Вы можете использовать это в своем процессе преобразования...

Ответ 2

Попробуйте SELECT CAST(field1 AS DECIMAL(10,2)) field1 и замените 10,2 любой необходимой точностью.

Ответ 3

cast (field1 as decimal(53,8)
) field 1

Значение по умолчанию: десятичное (18,0)