2013-11-21 1 views
0

마일을 킬로미터로 변환하고 싶습니다. 이 상황에서 과도한 사용은 BigDecimal입니까?10 진수를 정수로 변환하는 것은 BigDecimal overkill입니까?

BigDecimals를 사용하지 않고 다음을 개선 할 수 있습니까? 가장 가까운 전체 번호로 반올림하고 싶습니다. 저는 소수점에 관심이 없습니다.

private static final BigDecimal MILE = new BigDecimal(1.609344); 

String milesToKm(String miles) { 
    return new BigDecimal(miles).multiply(MILE).setScale(0, RoundingMode.HALF_UP).toString(); 
} 
+1

킬로미터와 마일 모두에 정수를 사용하는 경우, 'BigDecimal'은 확실히 과잉입니다. 나는 영향을 알지 못한다. (당신은 시차를 측정 할 수있다.) 부동 소수점 오류는 극히 적기 때문에 변환 후 변환하면 오류가 발생하지 않습니다. (나는 내 ​​진술을 증명할 언급이 없다. - 나는 그것이 존재한다고 확신한다. 그래서 그 대답을 게시하지 않을 것이다. ;-)) –

+0

'MILE'은 분수가있는 십진수 여야 만한다. 여기 BigInteger를 사용하십시오 ... – membersound

+0

단순히'double' 또는'float'을 사용하는 것을 암시하고 있습니다 ... –

답변

2

두 번 사용하면 무엇이 좋을까요?

int km = (int) Math.round(miles * 1.609344D); 

어쨌든 정수로 반올림하는 경우 왜 극소수의 오차가 발생할 수 있습니다.