Skip to content

Instantly share code, notes, and snippets.

@sinsengumi
Created September 3, 2011 14:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sinsengumi/1191254 to your computer and use it in GitHub Desktop.
Save sinsengumi/1191254 to your computer and use it in GitHub Desktop.
RoundOffError
import java.math.BigDecimal;
import java.math.RoundingMode;
public class RoundOffError {
private static final int DEVIDE_DECIMAL_SCALE = 20;
private static final int CALC_DECIMAL_SCALE = 10;
public static void main(String[] args) {
BigDecimal num3000 = new BigDecimal(3000);
BigDecimal num12000 = new BigDecimal(12000);
BigDecimal num64 = new BigDecimal(64);
BigDecimal hiritu1 = num64.divide(num12000, DEVIDE_DECIMAL_SCALE, RoundingMode.HALF_UP);
BigDecimal result1 = hiritu1.multiply(num3000);
int int1 = result1.intValue();
BigDecimal decimal1 = result1.subtract(new BigDecimal(int1));
System.out.println("hiritu1 [" + hiritu1.scale() + "][" + hiritu1.precision() + "] = " + hiritu1.toPlainString());
System.out.println("result1 [" + result1.scale() + "][" + result1.precision() + "] = " + result1.toPlainString());
System.out.println("int1 = " + int1);
System.out.println("decimal1 [" + decimal1.scale() + "][" + decimal1.precision() + "] = " + decimal1.toPlainString());
System.out.println();
BigDecimal hiritu2 = num3000.divide(num12000, DEVIDE_DECIMAL_SCALE, RoundingMode.HALF_UP);
BigDecimal result2 = hiritu2.multiply(num64);
int int2 = result2.intValue();
BigDecimal decimal2 = result2.subtract(new BigDecimal(int2));
System.out.println("hiritu2 [" + hiritu2.scale() + "][" + hiritu2.precision() + "] = " + hiritu2.toPlainString());
System.out.println("result2 [" + result2.scale() + "][" + result2.precision() + "] = " + result2.toPlainString());
System.out.println("int2 = " + int2);
System.out.println("decimal2 [" + decimal2.scale() + "][" + decimal2.precision() + "] = " + decimal2.toPlainString());
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment