2011-07-29 4 views
1

decimal을 소수점 이하 2 자리로 반올림하고 decimal으로 유지하는 방법은 무엇입니까?소수 자릿수 2 ~ 4 자릿수로 반올림

나는 이것을 할 수 있음을 알고 있지만 코드 냄새가있다.

var myResult = Decimal.Parse(myDecimal.ToString("0.00##")); 

이들은 예상되는 결과입니다. 당신이 표시를 포맷 할 때까지

0.028 -> 0.028 
0.02999 -> 0.03 
+0

를 사용하는 내 [답]에 이어 (http://stackoverflow.com/questions/6872165/rounding-to -at-least-2-to-4-decimal-places/6872192 # 6872192) - 계산의 정확성을 왜 떨어 뜨리고 싶습니까? 아니면 디스플레이 목적으로 계산 결과를 포맷 하시겠습니까? 가격은 – Jamiec

+0

입니다. 우리는 현재 '수학. 라운드'를 2 곳으로하고 있습니다. –

+0

'0.02689' ->'0.03' 또는'0.027' 또는'0.0269'을 처리하는 방법을 궁금합니다 (2에서 4 자리까지) – V4Vendetta

답변

4

decimal 나던을 사용할 수 있습니다.

+0

나는이 글을 쓰려고했는데, 나를 때렸다. :) 목적을 표시하는 것을 제외하고, 이것은 전혀 중요하지 않다. –

+0

나는 이것을 표시하기 위해'DataTable'에 집어 넣었고 그 열 유형은 십진수입니다. 나는'Math.Round'를 피하려고합니다. –

+0

@ 대니얼 -이 경우에는 실제 * 십진수 값을 데이터 테이블에 붙이고 표시 할 때 서식을 지정합니다 ... 표시 할 때 항상 형식 문자열을 제공하는 옵션이 있습니다 데이터. (예를 들어'Eval' 등을 사용할 때). – Jamiec

2

당신은 "소수점 이하 자릿수의 수"가 (아마해야하지, 나)

Math.Round(myResult, 4); 
+0

작동하지 않습니다. 위의 예를 참조하십시오. –

+2

"작동하지 않을 것"이라고 말하면주의하십시오. 이유를 설명해라. 그렇지 않으면 여기에 오는 사람들은이 코드에 문제가 있다고 생각할 것이며 그렇지 않습니다. 그 메모에서, 나는 당신이 "일하지 않을 것"이라고 말할 때, "내 목적을 위해 작동하지 않을 것"을 의미한다고 가정합니다. –

관련 문제