2016-09-01 2 views
1

Ich versuche, zwei Zahlen mit Hive SQL hinzuzufügen.Hinzufügen von zwei Dezimalzahlen Hive SQL

select 4.6 + 3.1 from <table> => 7.699999999999999 

Aber

select 4.7 +3.2 from <table> => 7.9 

Ich verstehe, dass Ergebnis Runden wird die erwartete Ausgabe geben, aber die Frage ist, warum dieses unterschiedliche Verhalten in erster Linie?

Ich verwende Hive 2.11 (Hive-Kontext) mit Apache Spark 1.6.2.

Antwort

1

Was Sie beobachtet haben, ist nicht Hive-spezifisch. Beispiel:

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

Es ist damit zusammen, wie die Doppelnummern im Speicher in einigen Sprachen gespeichert sind (floating-point): https://en.wikipedia.org/wiki/Floating_point#Internal_representation

Siehe auch:

+0

Sorry über d elais !. Danke für die Antwort. Akzeptiert. – Aiden