2014-03-28 3 views
-1

할인 된 가격으로 제품 가격이 계산됩니다. 예를 들어 제품 A가 100 달러이고 11.5 % 할인이 될 것입니다. 내가0에서 10 진수로 2 자릿수로 반올림

myDecimal = 0.885M 

같은 것을 같은 소수의 11.5 % 할인을 저장할 때, 변수는 0.89되기 위해이 곳으로 반올림됩니다. 잘못된 데이터 유형을 사용하고 있습니까? 수학 오류로 인해 부동 소수점 값을 사용하지 않도록 배웠기 때문에 사용할 다른 것을 모르겠습니다.

해결책은 무엇입니까?

+1

암시 적으로 반올림해서는 안됩니다. 코드를 더 많이 보여줄 수 있습니까? – Josh

+0

'decimal myDecimal = 0.885M;'복제 안 함. 문제의 원인이되는 코드 표시 – gunr2171

+0

상점에 말할 때 무엇을 의미합니까? SQL 데이터베이스에 값을 저장하는 것에 대해 이야기하고 있습니까? 그렇다면 SQL의 십진수 값에 대한 사전 및 스케일 요소가 있습니다. 이 기사를보십시오 : http://technet.microsoft.com/en-us/library/ms190476.aspx – kmacdonald

답변

2

십진수의 문자열 표현을보고있는 중입니다.이 표현은 2 자리 십진수로 나타납니다. 이와 다른 string format specification을 사용해보십시오. MSDN에 따른

static void Main(string[] args) 
{ 
    decimal myDecimal = 0.885M; 
    Console.WriteLine(myDecimal.ToString("N")); 
    Console.WriteLine(myDecimal.ToString("N3")); 
    Console.ReadLine(); 
} 

기본 Decimal.ToString() 이행 상태 :

toString 메소드가 디폴트 ("G", 또는 일반) 현재 배양 형식의 십진수 값을 포맷.

+0

OP가 이것을하고 있음을 어떻게 알았습니까? – gunr2171

+0

@ gunr2171 값을 보면 ToString 메서드를 사용합니다.이 메서드는 기본적으로 'G'일반 형식으로되어 있으며 두 자리 인 것으로 추측됩니다. 나는 그에게 자신의 정밀도가 여전히 있음을 보여주는 모범을 보였습니다. 그것은 단지 추측이었고 나는 틀릴 수있었습니다. –

+0

글쎄, 귀하의 게시물에있는 모든 사실이 사실이지만, 나는 그것이 질문에 어떻게 연관되는지 보지 못합니다. OP는 ZERO CODE를 제공 했으므로 실수로 잘못된 ToString을 사용하고 있는지 누가 알 수 있습니까? 질문이 의미하는 것처럼, 이것은 단지 어둠 속에서의 발사입니다. – gunr2171

관련 문제