Reputation: 39501
How can I cast Long
to BigDecimal
?
Upvotes: 41
Views: 117856
Reputation: 619
You should not use BigDecimal d = new BigDecimal(long); !!
The implementation in BigDecimal for longs is not precise. For financial applications this is critical!
But the implementation for the String argument is better! So use something like:
new BigDecimal(yourLong.toString());
There was a talk on http://www.parleys.com/ about this.
Upvotes: 17
Reputation: 29322
You'll have to create a new BigDecimal
.
BigDecimal d = new BigDecimal(long);
Upvotes: 68
Reputation: 28059
For completeness you can use:
// valueOf will return cached instances for values zero through to ten
BigDecimal d = BigDecimal.valueOf(yourLong);
0 - 10 is as of the java 6 implementation, not sure about previous JDK's
Upvotes: 24
Reputation: 19320
You need to create a new BigDecimal object
Long test = new Long (10);
BigDecimal bigD = new BigDecimal(test.longValue());
Upvotes: 2
Reputation: 138874
You can't cast it. You can create a new BigDecimal
though. You can get a long
from a Long
using Long.getLongValue()
if you have the non-primitave Long.
BigDecimal bigD = new BigDecimal(longVal);
Upvotes: 4