我正在尝试将变量十进制的字符串字段转换为双精度。我遇到的问题是,因为小数是可变的,可以是以下任意一种:
359.879999
35.8799999
3.59879999
Run Code Online (Sandbox Code Playgroud)
(将小数点移动到任何您想要的位置,但是该字段的长度始终为9)
我试着做:
cast(RECURR as float) as RECURR
Run Code Online (Sandbox Code Playgroud)
但这只是返回:
359.880004882813
Run Code Online (Sandbox Code Playgroud)
我试过了:
cast(RECURR as decimal) as RECURR
Run Code Online (Sandbox Code Playgroud)
然后返回:
360
Run Code Online (Sandbox Code Playgroud)
如何尝试:
select cast(recurr as decimal(19, 9))
Run Code Online (Sandbox Code Playgroud)
这应该适用于小数点潜伏的任何地方。
请注意,未使用的小数位将为零。