关于hive当中的double的数据类型

最近发现通过sqoop将oracle数据库当中的数据到如到hive当中,发现oracle数据库当中number类型的数据变成了hive当中的double类型。不只是变成了double类型,数据好像稍微有点变化。

比如原来的:3769.14 变成了 3769.1399999999999 ,还有就是1737.66 变成了1737.6600000000001  貌似有点数据变小了,有的数据变大了

这个是什么原因那,

产生如上结果原因为:
a) 对于所有使用IEEE标准进行浮点编码系统中,都普遍存在如下问题,并不仅仅是hive,Java,还有很多

b)hive当中double是8个字节。比如0.2对饮的真实结果是0.200000000001

c) 顺便说一下 hive当中的float类型是占4个字节,比如0.2对应的是0.2000001


所以在进行数据类型比较的时候,特别是hive当中,如果大于某个数,其实这个时候指的就是double的数据类型。
 

综上所以在将数据导入到hive之后的精度发生了变化。所以我们要将hive当中的数据类型和oracle数据库当中的数据类型对应起来。这样在导入数据的时候才不会出现数据精度发生变化的情况。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值