2013-10-13 168 views
-4

我正在考慮編寫一個處理小數的小java類。基本思想是有兩個int字段,一個用於將值保留在小數點左側,另一個將值保留在小數點右側。 E.g在下面的編號:BigDecimal(Java)的內存消耗

100.50

100將在第一int和50將在第二。

這是否值得去做,或者BigDecimal已經在其實施中做了這樣的事情?

+4

讓我們來回答這個問題;你有什麼特別的原因可以避免使用BigDecimal嗎? –

+1

我想知道,這個問題適合[SO]嗎?似乎沒有任何其他答案比「取決於」 – ppeterka

+4

@ClickUpvote在這種情況下,第二個整數(片段的內容)的內容是什麼:「1.00000001」? – ppeterka

回答

3

拇指的一個好的規則(從布洛赫,有效的Java,第二版轉述):

「不要推倒重來如果有可以用來做什麼,你一個Java API類。然後使用它,而不是嘗試重寫自己的類。語言開發人員多年來一直致力於完善和優化庫,通常對於獨立開發者來說不切實際(並且繼續優化它們)。「

這可能是你的需求很簡單。例如,也許你只是使用這個數字來標識一個對象(比如杜威十進制系統)並且你永遠不會對它們進行數字操作。如果你的需求是這樣簡單的(你還沒有告訴我們你將如何處理這些數字),那麼編寫你自己的課程作爲優化可能是明智的。

但是,如果您打算對這些數字進行任何類型的數學運算,則使用BigDecimal以固定的精度表示數字數量是絕對正確的方法。我甚至不用擔心記憶。內存很便宜。

此外還應考慮到BigDecimals的已經:

  • 是不可改變的
  • 是數
  • 的子類實現Comparable接口
  • 提供以下操作:算術,規模操作,舍入,比較,哈希算法和格式轉換。