2009-05-28 172 views
25

如何投射LongBigDecimalcast Long to BigDecimal

+6

你不能投一個到另一個。它們不是普通超類的子類。 – 2009-05-28 15:53:11

回答

40

您必須創建一個新的BigDecimal

BigDecimal d = new BigDecimal(long); 
+1

謝謝,這很簡單,非常有幫助。 – Ali 2012-12-05 06:02:44

4

你不能施放它。但您可以創建一個新的BigDecimal。如果您有非原始長度,您可以使用Long.getLongValue()Long獲得long

BigDecimal bigD = new BigDecimal(longVal); 
+0

織補,太慢了。 – jjnguy 2009-05-28 15:52:08

2

你需要創建一個新的BigDecimal對象

Long test = new Long (10); 
    BigDecimal bigD = new BigDecimal(test.longValue()); 
15

爲了完整起見,你可以使用:

// valueOf will return cached instances for values zero through to ten 
BigDecimal d = BigDecimal.valueOf(yourLong); 

0 - 10是java 6的實現,不知道以前的JDK的

+1

根據JavaDocs,valueOf是首選:「此」靜態工廠方法「優先於(長)構造函數提供,因爲它允許重複使用經常使用的BigDecimal值。' – 2009-05-29 03:14:45

11

你不應該使用BigDecimal d = new BigDecimal(long); !

BigDecimal中多處理器的實現並不精確。 對於金融應用來說這至關重要!

但是String參數的實現更好! 所以使用類似:

new BigDecimal(yourLong.toString()); 

有上http://www.parleys.com/好好談一談。

+0

我意識到這有點晚,但是你有沒有更直接的聯繫來源,因爲在JDK7中查看BigDecimal的來源似乎充其量是過時的。 – 2013-08-05 19:40:24