2011-11-11 5 views
1

나는 이것을 묻는 많은 질문이 있다는 것을 알고 있지만, 해결책 중 상당수를 시도했지만 아무도 정확하게 그것을 어떻게 작동시키지 못하는가!float/decimal에서 소수점 이하 3 자리로 정확히 반올림 하시겠습니까?

대부분의 솔루션은 내가이 float이 내 테스트 데이터에 그러나 일 : 나는 4이 반올림 경우 0.08095238095238096

내가 얻을 수가; 0.081 내가 0.0809을 가질 필요가 있고 마지막 자리를 반올림하지 않았습니다.

또한이 유형의 숫자로 float 또는 double을 사용하는 것이 가장 좋습니다.

덕분에

+1

가능한 복제본 [소수점 이하 2 자리의 유효 숫자를 반올림] (http://stackoverflow.com/questions/2808535/round-a-double-to-2-significant-figures-after-decimal-point) – tchrist

답변

7

대신 반까지 반올림의 FOUR 소수점 이하 자릿수로 내림 할 것으로 보인다.

d = Math.floor(d * 10000)/10000.0; 

double d = 0.08095238095238096; 
d = (long) (d * 10000)/10000.0; 

또는

나는 당신이 D = 0.0809 대신에 0.809의 원하는 뜻 가정합니다.

아마도 당신은 3 자리 숫자를 생각하는 것이 더 힘든 문제 일 것입니다.

아주 좋은 이유가없는 한 float 대신 double 또는 BigDecimal을 사용하는 것이 가장 좋습니다.

BTW : 원하는 것을 명확히하고 그렇지 않으면 찾기가 훨씬 어려울 것입니다. ;)

0

원래 번호가 잘못되었습니다. 0.809을 얻으려면 0.8095238095238096으로 시작해야합니다 (그대로 0.08095238095238096).

+3

아마도 이것은 대답이 아니라 대답입니다. ;) –

+0

솔직히 말해서, 나는 조소가 자신의 질문 중 가장 간단한 부분이 올바른지 확인하기 위해 시간을 할애 할 수 없다면조차도이 질문이 가치가 없다고 생각합니다. 특히 당신과 같은 사람들이 좋은 생각을하기 위해 시간을 들여야 할 때 특히 그렇습니다. - 아웃 대답. – Bohemian

+0

OP가 무엇을 원하는지에 대한 명확한 생각이없는 이유는 그가 솔루션을 찾는 데 너무 많은 어려움을 겪었다는 것입니다. –

관련 문제