Win a copy of Design for the Mind this week in the Design forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Converting BigDecimal to long with rounding

 
Janek Kowalski
Greenhorn
Posts: 3
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hello Everybody,

I have problem with converting BigDecimal value to long value but with rounding applied (HALF_UP). i.e:
I have BigDecimal:



After covering I'd like l to have value 13, so method longValue doesn't help.
I use following trick but I'm not happy about it, maybe there is better way to do this?



greetings
j.k.

 
Rob Spoor
Sheriff
Pie
Posts: 20511
54
Chrome Eclipse IDE Java Windows
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Try rounding the BigDecimal first, then calling its longValue() method:
The rounding takes the precision (number of digits) minus the number of decimals. This may go wrong if the rounding adds a digit (e.g. from 99.5 to 100), but initial tests show no problem.
 
Till Stoschus
Greenhorn
Posts: 14
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi Janek,

if you expect that the 1st decimal place should decide rounding, then this could be a solution:



Till
 
Janek Kowalski
Greenhorn
Posts: 3
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Thank you very much .

Both solutions work fine.

greetings
j.k.
 
Rob Spoor
Sheriff
Pie
Posts: 20511
54
Chrome Eclipse IDE Java Windows
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I would prefer Till's solution. It handles cases like the jump form 99.xx to 100 better.
 
Janek Kowalski
Greenhorn
Posts: 3
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Rob Prime wrote:I would prefer Till's solution. It handles cases like the jump form 99.xx to 100 better.


I've chosen Till's solution because using this I create one object less (MathContext) but when I've changed rounding mode to HALF_UP in yours solution it worked pretty the same. (99.7 was converted to 100 properly). Perhaps I'm missing something.

greetings
j.k.
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic