2011-06-27 17 views
1

我在尋找Java框架,對數級(忽略原子的子類),實現共同的數學運算,與像 對數字

 
compare(Number a, Number b); 
add(Number a, Number b); 

方法和以下數量型鑄造的規則的Java框架參數是十進制的,那麼操作結果將是十進制, ,如果所有參數都是整數,則操作結果將是整數。

這個的目的: 我有數學實用工具類,它操作小數和整數。一些操作需要進行很多次迭代,如果數字是十進制數,會導致精度降低,但如果操作對整數參數起作用(因爲沒有除法操作),則可以避免精度損失。因此,我試圖通過使用可能在整數域中計算的數學框架來減少精度損失(對於所有參數都是整數的情況)。

另一個問題是 - 也許我錯了,對於小數的多/加/分操作沒有精度損失?

+0

什麼Java類型是不是在暗示,當你說「小數」? – Giann

+0

實現浮點模型(BigDecimal,Double,Float)的所有數字 – setec

回答

2

您可以使用java.math.BigDecimal類來獲得 無限精度 Javadocs稱爲「任意精度」的十進制算術。

0

我曾經做過在我的大學的一個項目,以實現對所有類型的數字(包括整型,雙精度等)或其它數據結構的算術運算(如間隔數或複數等等)

實現這一目標的唯一途徑是實現一個包裝類爲各種不同類型:

public interface NumberWrapper<T> { 

public T add(T other); 
public T substract(T other); 
public T sin(); 
} 

我們沒有找到一個框架,以支持我們在任何方面。

0

使用十進制加法,減法和乘法可能會導致精度損失,除非您擁有無限數量的數字。在整數超過整數的最大值的情況下,甚至對於整數也是如此。


的數字的有限數量的手段的內存無限量...

+0

BigDecimal(和BigInteger)爲您提供無限數量的數字。 – Thilo