hive 中的float和double
2024-08-25 13:17:15
表employees中字段 taxes(税率)用类型float存储
hive> select name, salary, taxes from employees where taxes > 0.2
john 5300.0 0.2
marry 9500.0 0.2
jack 15000.0 0.3
产生如上结果原因为:
a) 对于所有使用IEEE标准进行浮点编码系统中,都普遍存在如下问题,并不仅仅是hive,Java,还有很多
b) 0.2在hive中默认使用double 8字节,对应真实结果为 0.200000000001
c) taxex中作为float存储那么0.2对应真实结果为 0.2000001
d) 因此对上面查询必然会出现 float类型的0.2大于 double类型的 0.2因此出现 jon marry的查询结果。
对如上修改方式如下:
a) 修改employees表字段taxes为string,然后比较时用 where taxes > '0.2'
b) 修改employees表字段taxes为double,然后比较时依旧用 where taxes > 0.2
c) 表employees不做修改,查询时使用 where taxes > cast(0.2 as float)
最新文章
- KnockoutJS 3.X API 第六章 组件(3) 组件绑定
- IOS开发基础知识--碎片11
- keil 怎样新建工程,编写代码?
- [中英双语] 数学缩写列表 (List of mathematical abbreviations)
- Java 9.10习题
- 分享一个刷网页PV的python小脚本
- Clean Code第二章<;命名>;
- Android开发笔记一(hello world)
- centos 安装php ide (eclipse + php 插件)
- android之listView定位到指定行同时隐藏输入键盘
- (转)精通 JS正则表达式
- ORACLE模拟一个数据文件坏块并使用RMAN备份来恢复
- !!!!!安卓界面总是显示载入进度条的问题,没事别乱用ListFragment
- tomcat 修改网站路径(Java之负基础实战)
- Java并发编程面试题 Top 50 整理版
- MongoDB配置简明文档
- 支持flash in Chrome 2017
- (转)如何修改maven的默认jdk版本
- es手动创建索引,修改索引,删除索引
- 力扣(LeetCode) 14. 最长公共前缀