2007년 5월 1일 화요일

숫자 계산시 오류 반올림

double 을 BigDecimal로 변환시 소숫점 상에 미세한 값이 오차가 생기내

원인은 못찾았으나 해결책은 찾았지만.... 영 찜찜하네... --> 해결책 String

double c = 79.355;

BigDecimal bb = new BigDecimal(c);

System.out.println("bb = " + bb);

bb = 79.3550000000000039790393202565610408782958984375

double c = 1.355;
BigDecimal bb = new BigDecimal(c);
System.out.println("bb 2 = " + bb);

bb2 = 1.354999999999999982236431605997495353221893310546875

public static double Round3(double val, int round){

System.out.println(new BigDecimal(val));

return new BigDecimal(Double.toString(val)).setScale(round,BigDecimal.ROUND_HALF_UP).doubleValue();

}

댓글 없음: