關於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數據庫當中的數據類型對應起來。這樣在導入數據的時候才不會出現數據精度發生變化的情況。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM