2011-01-31 6 views
0

SQL Express 데이터베이스에 십진수 (18, 2) 필드가 있습니다.십진수 값이 반올림되지 않았습니다.

이제 일부 집계가 발생하면 결과가 나타납니다. 나는 때때로 1 센트를 잃는다.

결과가 192,84 유로라고 가정하면 내 프로그램은 192,83 유로를 표시하지만 계산기를 사용하여 집계를 만들면 192,84가 표시됩니다.

왜 이런 일이 벌어 질 수 있는지 생각해보십시오. 형식 문자열 통화로 DevExpress 컨트롤을 사용합니다. 필드를 10 진수 (18,3)로 변경하는 아이디어가 있습니다. 어떻게 생각하니?

감사합니다

값이 처음으로 쇼 suming된다 [편집] 이제

(예 : 1.074,65 등 1.074,64) 나는 그것이 내림하지만 올바른가 볼 수 있다고 말했다 제 2 끝, 65.

예 : 194,61 + 182,20 + 697,84 = 1.074,65이지만, 1.074,64로 내려갑니다. 이 값을 다시 얻으려고하면 올바르게 표시됩니다. ...

언제나 반올림해야한다고 생각합니까? 10 진수 값에 대한 가장 효율적인 반올림 방법은 무엇입니까?

일부 코드 :

SumingTotal = AnObject.ListOfAType.Sum(p => p.DecimalProperty) + 
               (DecimalValue1 + DecimalValue2); 

이 1.074,65으로 동일하지만 난이 값을 표시하는 환경에서 얻을 경우 1.074,64를 표시하고 데이터베이스에 저장 일부 후에 다시 확인하려고 다시 계산해야 양식에 입력하는 동안 제대로 표시되지만 데이터베이스에 이미 잘못되었습니다.

감사합니다.

답변

0

데이터는 데이터베이스에 어떻게 저장됩니까? 흙손?

돈이라면 10 진수 (18,2)로 저장하십시오.

편집 : "ValuesDecimals"란 무엇입니까? SELECT SUM (myfield)이라고하고 myfiled가 18,3이라면 올바른 것입니다.

오류의 원인 일 수있는 "ValuesDecimals"로 합계하는 것처럼 들립니다.

전체 코드를 시험해보십시오.

+0

나는 십진법 (18, 2)의 유형을 가진 데이타베이스 분야에 그것을 저장하고있다 나는 그것을 얻지 않는다. –

+0

흠. 합산되지 않는 정확한 목록을 보여줄 수 있습니까? – smirkingman

+0

몇 가지 코드를 게시하려고 시도합니다 .... –

관련 문제