zoukankan      html  css  js  c++  java
  • 关于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数据库当中的数据类型对应起来。这样在导入数据的时候才不会出现数据精度发生变化的情况。

  • 相关阅读:
    day11 函数的进阶
    day10 文件的补充以及函数
    day9 文件处理
    day8 字典的补充以及集合
    Vue学习下
    前端常用js方法集
    js实现千位符格式化
    Vue项目总结上
    VUE项目github
    http://www.jianshu.com/p/42e11515c10f#
  • 原文地址:https://www.cnblogs.com/gxgd/p/10365573.html
Copyright © 2011-2022 走看看