hive - HIVE 长小数结果
问题描述
在 hive 中,当执行以下 select 语句时,它返回 1.20000000000000002 作为结果而不是 1.2。
选择 1.1 + 0.1;
实际上,当存储类似的 FLOAT 值时,它在我们的 hive 表中做同样的事情,所以我想问这个问题。谢谢
解决方案
这就是浮点运算的工作原理。如果您需要精度,cast
则结果为decimal
.
select cast(1.1+0.1 as decimal(9,1))
十进制文字为浮点数提供了比 DOUBLE 类型更精确的值和更大的范围。十进制数据类型存储数值的精确表示,而 DOUBLE 数据类型存储数值的非常接近的近似值。
对于 DOUBLE 的(非常接近的)近似值不足的用例,例如金融应用程序、相等和不等式检查以及舍入运算,需要使用小数类型。对于处理超出 DOUBLE 范围(大约 -10308 到 10308)或非常接近零(-10-308 到 10-308)的数字的用例,也需要它们。有关 DOUBLE 类型限制的一般性讨论,请参阅 Wikipedia 文章Double-precision floating-point format。
推荐阅读
- python - python请求得到错误61连接被拒绝但邮递员使用相同的GET请求
- python - 无法使用索引从 DynamoDB 表中检索结果
- c# - 为什么在连接到 IBM MQ 时会收到此错误?
- python - Python-从字符串文本中检索特定文本
- c# - 在 C# 的 for 循环中设置自定义操作
- google-apps-script - 结合两个 onEdit 函数,每个函数都使用自己的数据为自己的工作表工作
- mysql - 优化MySql临时表更新查询
- flutter - Flutter - VSCode 没有完成飞镖代码,通过建议框自动完成选择小部件只是名称
- r - 根据先前的值和 data.table 中的另一个变量填充一个变量
- python - 等待正在运行的容器的正确异步方式