[C#] C #에서 돈을 위해 사용하는 가장 좋은 데이터 유형은 무엇입니까?

C #에서 돈을 위해 사용하는 가장 좋은 데이터 유형은 무엇입니까?



답변

십진수 로 다음과 같이 설명 됩니다.

decimal 키워드는 128 비트 데이터 형식을 나타냅니다. 부동 소수점 유형과 비교하여 10 진수 유형은 정밀도와 범위가 작기 때문에 재무 및 금전적
계산에 적합합니다 .

다음과 같이 소수를 사용할 수 있습니다.

decimal myMoney = 300.5m;


답변

시스템. 소수

10 진수 값 유형은 양수 79,228,162,514,264,337,593,543,950,335에서 음수 79,228,162,514,264,337,593,543,950,335 범위의 십진수를 나타냅니다. 10 진수 값 유형은 많은 유효 정수 및 소수 자릿수가 필요하고 반올림 오류가없는 재무 계산에 적합합니다. 십진법 유형은 반올림의 필요성을 제거하지 않습니다. 오히려 반올림으로 인한 오류를 최소화합니다.

왜 double을 사용해서는 안되는지에 대한 zneak의 훌륭한 답변 을 지적하고 싶습니다 .


답변

Enterprise Application Architecture의 패턴 에서 Money 패턴 을 사용하십시오 . 금액을 소수로 지정하고 통화를 열거 형으로 지정하십시오.


답변

소수. double을 선택하면 반올림 오류가 발생합니다.


답변

십진수의 범위는 작지만 정밀도가 높으므로 시간이 지남에 따라 모든 동전을 잃지 않습니다!

자세한 내용은 여기 :

http://msdn.microsoft.com/en-us/library/364x0z75.aspx


답변

Money 패턴에 동의하십시오 : 10 진수를 사용할 때 통화 처리는 너무 번거로울 수 있습니다.

Currency 클래스를 만들면 올바른 ToString () 메서드, 구문 분석 값 제어 및 더 나은 나누기 제어를 포함하여 돈과 관련된 모든 논리를 넣을 수 있습니다.

또한 Currency 클래스를 사용하면 실수로 돈을 다른 데이터와 혼합 할 가능성이 없습니다.


답변

또 다른 옵션은 (특히 자신의 클래스를 롤링하는 경우) int 또는 int64를 사용하고 하위 4 자리 (또는 가능하면 2)를 “소수점의 오른쪽”으로 지정하는 것입니다. 따라서 “가장자리에”들어가는 길에 “* 10000”, 나가는 길에 “/ 10000″이 필요합니다. 이것은 Microsoft SQL Server에서 사용하는 저장 메커니즘입니다. http://msdn.microsoft.com/en-au/library/ms179882.aspx를 참조하십시오 .

이것의 핵심은 (빠른) 정수 산술을 사용하여 모든 합계를 수행 할 수 있다는 것입니다.