我處理價值從10 ^ 9到10 ^ 9日的總和值可以上升到10 ^ 20,需要精度。
所以我想用Decimal數據類型(使用SQL數據科學與工程工作空間)。
但是,我必須知道Decimal數據類型的特殊的行為。也就是說,改變精度保持精度。
由於這種行為,我所麵臨的問題,同時數字乘或除。(我有一個係列的乘法和除法的情況下改變數據)
當我用兩個數字,精度變化,當再次繁殖,精確度損失。
例如
選擇演員(1234.456小數(20日8))*鑄造(23478.89076小數(20日8))*鑄造(345678.125567小數(20日8))
我得到的回答:10019016421573.927554
真正的答案:10019016421573.92755433905952
我正在尋找規模約8
有任何特定的方法來處理這種情況嗎?
注意:所有的數字列在我的例子中有相同的數據類型。
大家好,
我知道沒有最好的回答這個問題。
所以,我隻能做同樣的事情我發現當我上網。
這個方法我發現當工作
方法很簡單,如果你想p小數精度,然後把所有需要的數字列10 ^ p和維護decimal數據類型,小數(38歲,6)。後由於默認小數精度超過數學運算的精度限製(38歲,6),你不會得到任何改變數據類型操作後實施。
例如,需要6小數精度,然後乘以10 ^ 6的列和做業務。但是請記住,如果你用兩列生成的列將10 ^ 12乘法器。所以,使用((C1/10 ^ 6) * C2)等操作。
然而,它是非常重要的,以確保沒有溢出或損失精度的堅持上麵的3點。然而,這可能是非常困難的,我們可能不知道結果的總和。因此,公正地使用這個方法。
小數的python模塊具有很高的靈活性這方麵(c++甚至更健壯的庫),但不能用於pyspark pyspark使用火花引擎和不支持的類型。
請糾正我如果我錯了。