配置单元将字符串转换为浮点十进制

Wes*_*ohn 2 sql hive casting

我正在尝试将变量十进制的字符串字段转换为双精度。我遇到的问题是,因为小数是可变的,可以是以下任意一种:

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)

Gor*_*off 6

如何尝试:

select cast(recurr as decimal(19, 9))
Run Code Online (Sandbox Code Playgroud)

这应该适用于小数点潜伏的任何地方。

请注意,未使用的小数位将为零。