2012-12-11 1 views
0

textView에 표시 할 값을 반올림하는 데 많은 문제가 있습니다.통화의 반올림 이중 값

기본적으로 두 자리로 반올림하고 싶지만 현재는 다른 숫자가 길어지고 있습니다. 내가 BigDecimal를하지만 지금까지 행운과 장난하고

...

public void calc() { 
     BigDecimal bd = new BigDecimal(subTotal); 
     bd.setScale(2, BigDecimal.ROUND_DOWN); 
     total.setText(String.valueOf(bd)); 
    } 
+0

하지 마십시오 나를 위해 일한 팔로우 부동 소수점 값을 사용하여 통화를 나타냅니다! http://stackoverflow.com/questions/3730019/why-not-use-double-or-float-to-represent-currency을 참조하십시오. –

답변

1

다음 코드를 사용해보십시오 :

double roundTwoDecimals(double d) { 
    DecimalFormat twoDForm = new DecimalFormat("#.##"); 
    return Double.valueOf(twoDForm.format(d)); 
} 
+0

일종의 작동하지만 계속 추가 할 때 마지막으로 마지막 0이 다시 나타납니다. 아이디어? – Javacadabra

+0

아마 그것을 표시하기 전에 그것을 포맷해야합니다 !! – Pavlos

0

BigDecimal bd = new BigDecimal(subTotal); 
bd = bd.setScale(2, BigDecimal.ROUND_HALF_UP); 
total.setText(String.valueOf(bd)); 
// Input: 9.888888 -> Output: 9.89 
// Input: 9f -> Output: 9.00