2013-10-11 1 views
1

나는이 줄 서식 문제가 있습니다Convert.ToDecimal (및 String.format ("{0 :. ##}", doubleAmount)을) 좋아하지 않는 0.0

Decimal amount = Convert.ToDecimal(String.Format("{0:.##}", doubleAmount)); 

doubleAmount 경우는 0.0를, 형식 예외가 발생합니다. 0.0은 어떻게 처리합니까?

+1

'{0 : 0. ##}'을 사용하여 적어도 하나의 숫자가 있는지 확인하십시오. –

+2

정수 구성 요소를 수용하기 위해'{0 : #. ##}'을 시도하십시오. – sasfrog

+2

'doubleAmount'이 double이라고 가정하면 왜 그것을 문자열로 변환 한 다음 'Decimal'으로 직접 변환하지 않고'Decimal'으로 변환합니까? –

답변

6

형식 문자열 {0:.##}은 0을 빈 문자열로 서식 지정하지만 빈 문자열은 Convert.ToDecimal의 올바른 인수가 아닙니다. FormatException이 발생하지 않게하려면 {0:0.##}을 사용하여 0을 0으로 포맷 할 수 있습니다.

(사용자 sasfrog는 {0:#.##}을 제시하지만, 그 또한 빈 문자열로 0의 형식을하기 때문에, 그것은 작동하지 않습니다.)

그러나 두 소수점 이하 자릿수를 Double 값을 반올림하려는 경우 Decimal 변수에 결과를 저장하면

Decimal amount = Decimal.Round((Decimal)doubleAmount, 2, MidpointRounding.AwayFromZero); 

을 사용해야하며 불필요한 문자열 포맷 및 구문 분석 오버 헤드를 건너 뜁니다.