Suresh
Suresh

Reputation: 39501

cast Long to BigDecimal

How can I cast Long to BigDecimal?

Upvotes: 41

Views: 117856

Answers (6)

Fico
Fico

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

Silfverstrom
Silfverstrom

Reputation: 29322

You'll have to create a new BigDecimal.

BigDecimal d = new BigDecimal(long);

Upvotes: 68

Gareth Davis
Gareth Davis

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

Mike Pone
Mike Pone

Reputation: 19320

You need to create a new BigDecimal object

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

Upvotes: 2

Fredou
Fredou

Reputation: 20100

you have to create a new bigDecimal

how to do it

Upvotes: 0

jjnguy
jjnguy

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

Related Questions