Rounding decimal digits

Price in Decimal digits is difficult to pay if your currency does not have low-value coins in circulation. So decimal digits might have to be rounded to the nearest value so that a figure like 0.56 can be paid. java.Math has MathContext and RoundingMode to round decimal digits.

So there is a precision that we specify. In the following code the precision is ‘1’ which means that .5625 is rounded to .6. We have rounded to 1 digit and the precision is lost but we ensure that the digits are either 0.5 or 0.6 depending on which is the nearest.

BigDecimal tax = new BigDecimal( 0.5625,
			new MathContext( 1,
 				RoundingMode.HALF_UP));

Output : 0.6

BigDecimal tax2 = new BigDecimal( 0.5325,
			new MathContext( 1,
				RoundingMode.HALF_UP));

Output : 0.5

BigDecimal tax2 = new BigDecimal( 0.5525,
			new MathContext( 1,
				RoundingMode.HALF_UP));

Output : 0.6 ( 0.55 is equidistant from 0.5 and 0.6. So it is rounded up to 0.6 )

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: