문제

나는 사람들이 두 배가 아닌 재무 신청에 10 진수를 사용하고 있는지보고 싶었습니다. 나는 의도하지 않은 결과로 모든 곳에서 두 배를 사용하는 많은 사람들을 보았습니다. .

다른 사람들 이이 실수를하는 것을 보십니까? . .

도움이 되었습니까?

해결책

불행히도 우리는 그것을 후회했습니다. 우리는 모든 복식을 소마로 바꿔야했습니다. 데시 말은 재무 신청에 좋습니다. 이 기사를 볼 수 있습니다CLR의 돈 유형:

산술 운영, 통화 유형, 서식 및 신중한 배포 및 손실없이 반올림을 처리하는 CLR을위한 편리하고 고성능 자금 구조.

다른 팁

예, 사용 float 또는 double 금융은 일반적인 실수로 많은 고통을 초래합니다. decimal 이 시나리오에서 가장 확실한 선택입니다.

일반적인 지식을 위해 각각에 대한 좋은 토론은 여기 (플로트/더블) 및 여기 (소수).

이것은 당신이 생각하는 것만 큼 분명하지 않습니다. 나는 최근 대기업의 컨트롤러가 자신의 재무 보고서가 Excel이 생성 할 내용과 일치하기를 원한다고 말했으며, 이는 내부적으로 계산 된 결과를 최대 정밀도로 유지하고 디스플레이 목적으로 마지막 순간에만 반올림합니다. 즉, 표시된 값 만 사용하여 수동 계산으로 항상 Excel 답변을 일치시킬 수는 없습니다. 그의 설명은 결과를 생성하기위한 여러 알고리즘이 있었고, 각각은 소수점 값을 사용하여 다른 장소에서 반올림을 수행하므로 잠재적으로 충돌하는 답변을 생성하지만 Excel 방법은 항상 동일한 답을 생성했습니다.

나는 개인적으로 그가 틀렸다고 생각하지만, 재무 계산에 올바르게 사용하는 방법을 이해하지 않고 Excel을 사용하는 많은 금융 사람들 이이 컨트롤러에 동의하는 많은 사람들이있을 것입니다.

나는 종교 전쟁을 시작하고 싶지 않지만 이것에 대한 다른 의견을 듣고 싶습니다.

"과학적"측정 (무게, 길이, 면적 등)이 두 배를 사용하는 경우.

재정적이거나 법과 관련이있는 경우 (예 : 재산 영역) 소수점을 사용하십시오.

어려운 부분은 반올림입니다.

세금이 2.4% 인 경우 세부 사항이나 금액 이후에 반올림합니까?

대부분의 시간은 둘 다해야합니다 (그리고 DIF를 고정)

나는 이것을 몇 번 다 씁니다. 많은 언어에는 내장 된 내용이 없으며 문제를 이해하지 못하는 사람에게는 또 다른 번거 로움처럼 보입니다. 특히 그것이 의도하지 않은 것처럼 보이는 것처럼 보입니다.

나는 항상 10 진수를 사용했습니다. 적어도 내가 그것을지지하는 언어가 있었을 때. 그렇지 않으면 반올림 오류가 당신을 죽일 것입니다.

나는 위에서 언급 한 부동 소수점 대 10 진수의 정확성 문제에 전적으로 동의하지만, 많은 재무 응용 프로그램이 성능이 중요합니다.

이 경우 소수점은 하드웨어에서 소수 유형이 지원되지 않는 시스템의 성능에 큰 영향을 미치기 때문에 Float/Double을 사용하는 것을 고려할 것입니다. 그리고 도메인 모델을 나타내고 모든 반올림 논리와 이러한 유형의 유효한 연산자를 캡슐화하는 고급 클래스 (예 : 세금, 커미션, 균형, 배당, 견적, 진드기 등)에서 플로팅 포인트 유형을 랩핑 할 수 있습니다. 그리고 그들의 상호 작용. 그리고 예 - 일부 프로젝트에서는 .NET 또는 Win32 방법에 비해 계산에서 최대 20% 더 많은 것을 짜기 위해 사용자 정의 반올림 기능을 구현했습니다.

고려해야 할 또 다른 것은 객체를 프로세스에서 전달하는지 여부입니다. 일반적으로 4 개의 정수 인 직렬화 소수점은 훨씬 더 CPU 집약적 (지원되지 않으면 ESP)이 훨씬 더 많은 대역폭과 더 큰 메모리 발자국을 초래하기 때문입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top