取消
顯示的結果
而不是尋找
你的意思是:

如何處理Decimal數據類型算術運算?

berserkersap
新的貢獻者三世

我處理價值從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

有任何特定的方法來處理這種情況嗎?

注意:所有的數字列在我的例子中有相同的數據類型。

1回複1

berserkersap
新的貢獻者三世

大家好,

我知道沒有最好的回答這個問題。

所以,我隻能做同樣的事情我發現當我上網。

這個方法我發現當工作

  1. 如果你知道你的範圍值處理(不僅輸入數據也得到轉換後的值像乘法,此外,部門)
  2. 你知道你想要的精度。
  3. 十進製數據類型範圍內的精度+範圍是(38歲,6)

方法很簡單,如果你想p小數精度,然後把所有需要的數字列10 ^ p和維護decimal數據類型,小數(38歲,6)。後由於默認小數精度超過數學運算的精度限製(38歲,6),你不會得到任何改變數據類型操作後實施。

例如,需要6小數精度,然後乘以10 ^ 6的列和做業務。但是請記住,如果你用兩列生成的列將10 ^ 12乘法器。所以,使用((C1/10 ^ 6) * C2)等操作。

然而,它是非常重要的,以確保沒有溢出或損失精度的堅持上麵的3點。然而,這可能是非常困難的,我們可能不知道結果的總和。因此,公正地使用這個方法。

小數的python模塊具有很高的靈活性這方麵(c++甚至更健壯的庫),但不能用於pyspark pyspark使用火花引擎和不支持的類型。

請糾正我如果我錯了。

歡迎來到磚社區:讓學習、網絡和一起慶祝

加入我們的快速增長的數據專業人員和專家的80 k +社區成員,準備發現,幫助和合作而做出有意義的聯係。

點擊在這裏注冊今天,加入!

參與令人興奮的技術討論,加入一個組與你的同事和滿足我們的成員。

Baidu
map