2010-07-02 3 views
4

현재 우리는 개발중인 .NET 응용 프로그램에서 숫자를 나타 내기 위해 System.Decimals를 사용하고 있습니다. 10 진수는 반올림으로 인한 오류를 최소화하는 디자인이지만, 예를 들어 1/3과 같은 특정 숫자는 소수로 표시 될 수 없으므로 일부 계산에서는 작은 반올림 오류가 발생한다는 것도 알고 있습니다. 나는이 오류의 크기가 매우 작고 중요하지 않다고 생각하지만 동료는 동의하지 않습니다. 따라서 우리 앱의 반올림으로 인한 오류의 크기 순서를 예측할 수 있기를 원합니다. 예를 들어, "거래"의 누적 합계를 계산하고 하루에 약 10,000 개의 거래를 수행하며 누적 합계를 계산하기 위해 약 5-10 자릿수 연산 (추가, 하위, div, mul 등)이 있습니다. 각 거래에 대한 새로운 누적 합계, 둥근 오류의 규모는 얼마입니까? 이것을 계산하는 절차에 대한 답은 또한 좋을 것이므로, 앞으로 나 자신을 위해 이것을 어떻게하는지 배울 수 있습니다.십진법을 사용하여 계산시 오류 추정

+1

소수점은 소수점 이하 28 자리까지 표시 할 수 있습니다. 이는 통화 조작에 적합합니다. 작업에 영리하다면 나누기/곱셈을 제한하거나 카운터 측정을 구현하여 나누기/곱셈 부정확성을 제거 할 수 있습니다 (반올림 + 빼기 또는 다른 방법 사용). 직접 통화 값에는 소수점 이하 자릿수가 많지 않으므로 더하기/빼기는 안전합니다. 일부 미친 사업부 (누적 된 경우)는 데이터 유형이 얼마나 광범위 하든지 (대책을 사용하지 않는 경우) 손실을 초래합니다. –

+0

필자가 결코 알지 못했던 한 가지 점은 십진수가 소수점 이하 28 자리까지 나타낼 수 있다는 것을 이해하지만 십진수가 증가함에 따라 이러한 변화가 일어나는 것입니까? 즉 백만의 가치를 보유하는 십진수는 여전히 소수점 이하 28 자리를 가질 수 있습니까? – Robert

+0

예 - 소수점은 고정 소수점이므로 정확도는 크고 작은 숫자에 대해 동일합니다. http://msdn.microsoft.com/en-us/library/system.decimal.aspx –

답변

1

What Every Computer Scientist Should Know About Floating-Point Arithmetic은 부동 소수점 유형의 정밀도가 주어지면 부동 소수점 연산 시퀀스의 결과에서 오류를 예측할 때 자세히 설명합니다. 실용적인 프로그램에서 이것을 시도하지는 않았으므로 가능한지 알고 싶습니다.

+0

누군가 나를 그것에 대한 한 음절의 단어로 번역 할 수 있다면 좋을 텐데, 이것이 올바른 답이라고 생각합니다. – Robert