添加两个十进制数Hive SQL

时间:2016-09-01 03:33:19

标签: apache-spark hiveql

我正在尝试使用Hive SQL添加两个数字。

select 4.6 + 3.1 from <table> => 7.699999999999999

但是,

select 4.7 +3.2 from <table>  => 7.9

我理解结果的舍入会给出预期的输出,但问题是为什么这种不同的行为在第一位?

我正在使用Apache spark 1.6.2的hive 2.11(hive context)。

1 个答案:

答案 0 :(得分:1)

您所观察到的并非特定于Hive。例如:

Python 2.7.10 (default, Oct 23 2015, 19:19:21) 
>>> 4.7+3.2
7.9
>>> 4.6+3.1
7.699999999999999

它与双数如何以某些语言(浮点)存储在内存中有关: https://en.wikipedia.org/wiki/Floating_point#Internal_representation

另见: