permaculture playing cards*
The moose likes Beginning Java and the fly likes BigDecimal divide question Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "BigDecimal divide question" Watch "BigDecimal divide question" New topic
Author

BigDecimal divide question

Tariq Ahsan
Ranch Hand

Joined: Nov 03, 2003
Posts: 116
Hello All,

Was getting the error - "java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result" while trying to do a divide of a BigDecimal by a BigDecimal. Found some code that I used to solve this problem above. The code I have does not look pretty. Wondering if there is a easier way to do the same.
Here's the code I have -



Here's the output -

Garrett Rowe
Ranch Hand

Joined: Jan 17, 2006
Posts: 1296
How many decimal places do you want to represent?



Some problems are so complex that you have to be highly intelligent and well informed just to be undecided about them. - Laurence J. Peter
Tariq Ahsan
Ranch Hand

Joined: Nov 03, 2003
Posts: 116
Thanks Garrett for your response. I would like to have 2 decimal places.

Tariq Ahsan
Ranch Hand

Joined: Nov 03, 2003
Posts: 116
Garrett,

Just tried the changes below with your code to get 2 decimal position output. Is there any other simpler way?



The output :

Garrett Rowe
Ranch Hand

Joined: Jan 17, 2006
Posts: 1296
This is a little simpler:

Tariq Ahsan
Ranch Hand

Joined: Nov 03, 2003
Posts: 116
Garrett,

Worked perfectly!

Thanks a lot!

Tariq
Tariq Ahsan
Ranch Hand

Joined: Nov 03, 2003
Posts: 116
Ugh...

The code did'nt quite work for me for the inputs as shown below -


Getting the output as - 78. But expect - 78.34

Any suggestions?

Thanks


Campbell Ritchie
Sheriff

Joined: Oct 13, 2005
Posts: 38016
    
  22
Read the MathContext specification. The 2 appears to refer to significant figures, not places after the decimal point.
Tariq Ahsan
Ranch Hand

Joined: Nov 03, 2003
Posts: 116
Any idea if I want to have result to be with 2 decimal points? Eventually I have to store the output value in NUMBER(9,2) datatype column in a database table.

Thanks
Campbell Ritchie
Sheriff

Joined: Oct 13, 2005
Posts: 38016
    
  22
There are several overloaded divide methods. Have you been through them? Are they of any use? Note what "scale" means.
Tariq Ahsan
Ranch Hand

Joined: Nov 03, 2003
Posts: 116
So far, the code below is working for me. But again need to try out exhaustively with all kinds of decimal value combinations.


Getting 78.34 as expected
Tariq Ahsan
Ranch Hand

Joined: Nov 03, 2003
Posts: 116
Or better use -



Was getting 79.02 with CEILING. With HALF_EVEN getting the correct result - 79.01. For the num with 1.16 getting the expected 78.34.
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: BigDecimal divide question
 
Similar Threads
Divide BigDecimal by Integer
Dividing a double value produces different results
Rounding decimal
Generating compound interest with integers
BigDecimal math operations problem (Groovy)