我有一个视图需要为存储为float的列返回十进制类型。
我可以将每列转换为十进制,如下所示:
, 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 。我无法修改有关该表的任何内容。
将十进制数输出为十进制精度的正确方法是什么?
答案 0 :(得分:23)
12, 12
表示小数点分隔符前没有数字:总共12
个数字,12
位于句点之后。
使用更合适的范围,例如:
DECLARE @var FLOAT = 100
SELECT CAST(@var as decimal(20,12))
在分隔符之前为您提供8
个数字,或根据需要进行调整。