所以看来,如果你
CAST(field1 as decimal) field1
这将自动添加舍入。
原文定义为:
field1类型:float length:8 prec:53
我需要将其强制转换为十进制,因为我需要我的Entity Framework层将此字段生成为十进制(而不是double)。
有没有办法将其转换为十进制,以便保留原始精度,而不是圆?
我想避免在演员表中声明精度,因为:
答案 0 :(得分:51)
你试过了吗?
SELECT Cast( 2.555 as decimal(53,8))
这将返回2.55500000
。这就是你想要的吗?
<强>更新强>
显然,您也可以使用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
您可以在转换过程中使用此功能......
答案 1 :(得分:2)
尝试SELECT CAST(field1 AS DECIMAL(10,2)) field1
并以您需要的精度替换10,2
。
答案 2 :(得分:1)
cast (field1 as decimal(53,8)
) field 1
默认值为:decimal(18,0)