다른 시스템에서 다른 데이터 유형을 읽으므로 소수를 사용하는 반올림 오류가 있습니다. 그래서 10 진수 타입에 + 연산자를 오버로드하는 것이 가능한지 궁금합니다. 내가 본 모든 예제는 새로운 정의 된 구조체에 있습니다.10 진수 형식의 + 연산자를 오버로드 할 수 있습니까?
1
A
답변
4
아니요 decimal
은 value type이므로 상속 될 수 없습니다. 이 방법 이외의 반올림을 수정해야합니다 (예 : 확장 메소드).
public static decimal Add(this decimal value, ...)
{
... do manual calculation & rounding
}
3
할 수 있습니다 만 과부하 클래스/구조체의 정의 내부 클래스/구조체에 대한 사업자, 그래서 당신이 decimal
유형의 기본 +
동작을 재정의 할 수있는 방법은 없습니다.
이상적으로 원본에서 반올림 오류를 해결하기 위해 일종의 래퍼를 작성하는 것이 좋습니다.
관련 문제
- 1. 연산자를 "두 배 오버로드"할 수 있습니까?
- 2. [] 연산자를 어떻게 오버로드 할 수 있습니까?
- 3. Python에서 ++ 연산자를 오버로드 할 수 있습니까?
- 4. MC6800에서 10 진수 (10 진수)를 직접 사용할 수 있습니까?
- 5. 16 진수 또는 10 진수 형식의 변수 인쇄
- 6. 10 진수 형식의 큰 숫자 인쇄
- 7. Java는 연산자를 오버로드 할 수 없습니다. 왜?
- 8. 10 진수 형식의 쉼표를 사용하여 삽입
- 9. Delphi 레코드에 대한 대입 연산자를 오버로드 할 수 있습니까?
- 10. 클래스에서 정적 연산자를 오버로드 할 수 있습니까? C#에서
- 11. 오버로드 + = +, ==와 = 연산자를
- 12. C++ 템플릿에 = 연산자를 오버로드
- 13. C에서 간접 연산자를 오버로드
- 14. 정적 클래스에서 연산자를 왜 오버로드 할 수 없습니까?
- 15. 파이썬 할당을 오버로드 할 수 있습니까?
- 16. 연산자를 오버로드 할 수 있도록 포인터 래퍼가 필요합니까?
- 17. 루아 10 진수 부호?
- 18. 조건부 10 진수 형식
- 19. BitXor 10 진수 상당
- 20. 은 C++에서 연산자를 오버로드 할 수 없습니다
- 21. Math.Round (10 진수) 문제
- 22. 10 진수 형식의 통화 텍스트 구문 분석 문제
- 23. 10 진수 승수의 버그
- 24. 10 진수 형식의 정수 (3)를 SQLite의 해당하는 이진수 11로 변환 할 수있는 방법이 있습니까?
- 25. 10 진수 값 순환
- 26. 10 진수/정수 곱하기
- 27. PHP 10 진수 계산
- 28. C# 10 진수 형식
- 29. 음수 10 진수 값을 저장할 수 없습니다.
- 30. 10 진수 - 2 진수 변환에 잘못된 함수가 있습니까?
내 마음의 무언가가 "이게 올바른 접근이 아니야"라고 잔소리를하고 있습니다. "다른 시스템에서 다른 데이터 유형을 읽었 기 때문에"진술을 명확히 할 수 있습니까? 당신이 과부하를 + 후회하게 될 가능성을 고려해보십시오. 특히 구현 과정에서 두 개의 십진법을 추가 할 필요가있는 경우에 고려하십시오. 또한 현재 사용중인 .NET 버전/버전과 관련된 동작에 의존 할 가능성도 고려하십시오. –