HIVE长十进制结果

时间:2018-08-20 20:43:40

标签: hive hue

在配置单元中,在执行以下select语句时,它返回的结果是1.20000000000000002,而不是1.2。

选择1.1 + 0.1;

实际上,当存储相似的FLOAT值时,它会在我们的配置单元表中做同样的事情,所以我想问一下。 谢谢

1 个答案:

答案 0 :(得分:1)

这就是浮点运算的工作原理。如果需要精度,则将cast的结果作为decimal

select cast(1.1+0.1 as decimal(9,1))

From Hive documentation

  

十进制字面量提供比DOUBLE类型更精确的值和更大的浮点数范围。十进制数据类型存储数字值的精确表示,而DOUBLE数据类型存储数字值的非常近似的值。

     

对于双精度(非常接近)不足的用例,需要十进制类型,例如财务应用程序,相等性和不平等性检查以及舍入运算。对于处理数字范围超出双精度范围(大约-10308至10308)或非常接近零(-10-308至10-308)的用例,也需要使用它们。有关DOUBLE类型的限制的一般性讨论,请参阅Wikipedia文章Double-precision floating-point format