내가 자바 double 값을 반올림하는 데 사용되는 다음과 같은 기능이 있습니다 :자바의 BigDecimal 반올림 오류
double d = 7.3149999999999995;
int decimalPlace = 2
하지만, :,이 함수는이 값을 입력으로
public static double round(double d, int decimalPlace) {
BigDecimal bd = new BigDecimal(Double.toString(d));
bd = bd.setScale(decimalPlace, BigDecimal.ROUND_HALF_UP);
return bd.doubleValue();
}
수신 함수가 반환하면 반환되는 값은 7.32가 아니라 7.31입니다. 문서를 검색하여 bd.SetScale이 해당 동작을 사용하지만 성공하지 못하는 이유를 확인했습니다.
아무도 내가 이런 일이 일어나는 이유를 설명 할 수 있습니까? 감사합니다.
대신 '7.314999995'를 주면 어떻게됩니까?어쩌면'5'가 사라집니다. – Claudiu
왜 그렇게 놀라운가요? 정확히 7.31에서 7.32 사이가 아니기 때문에 왜 7.32로 반올림됩니까? –
무엇이 7.3159999999999 ...? –