Son*_*oul 10 sql sql-server casting
我有一个视图,需要返回存储为float的列的类型十进制.
我可以将每列转换为十进制,如下所示:
, CAST(Field1 as decimal) Field1
Run Code Online (Sandbox Code Playgroud)
这种方法的问题是十进制默认为18,0,它自动将浮点列舍入为0.我希望保持最多12位小数的精度.
但是,如果我这样做:
, CAST(Field1 as decimal(12,12)) Field1
Run Code Online (Sandbox Code Playgroud)
我收到运行时错误:
"Arithmetic overflow error converting float to data type numeric"
Run Code Online (Sandbox Code Playgroud)
float列定义为length:8精度:表格中的53.我无法修改有关该表的任何内容.
什么是以十进制表示丢失十进制精度的正确方法?
Qua*_*noi 24
12, 12表示小数分隔符之前没有数字:12总数位数,12它们位于句点之后.
使用更合适的范围,例如:
DECLARE @var FLOAT = 100
SELECT CAST(@var as decimal(20,12))
Run Code Online (Sandbox Code Playgroud)
它8在分隔符之前为您提供数字,或根据需要进行调整.