은행은 실제로 돈의 데이터 유형으로 무엇을 사용합니까? [닫은]


9

몇 가지 좋은 옵션을 알고 있습니다 .

  1. 센트 또는 10 - n 센트 를 나타내는 큰 정수 (예 : int64_t, mpz_t, 모든 bignum lib ) -정수는 1 페니의 1/100을 나타냅니다 ($ 1.05 == 10500). 이것을 스케일 정수 라고합니다 .

  2. Java의 BigDecimal , Python의 Decimal, Javascript의 decimal.js, C ++의 boost :: multiprecision 과 같은 임의의 정밀도 10 진수 산술을위한 고급 라이브러리

  3. 문자열.

  4. 압축 BCD (이진 코드 10 진수)는 구식 소프트웨어에서 널리 사용되는 좀 더 난해한 방법입니다. 그것에 대해 읽어보십시오 .

은행 (또는 신용 카드, ATM, POS 시스템)의 생산 코드에서 실제로 어떤 데이터 유형이 가장 많이 사용됩니까? 저는 특히 은행에서 일하는 사람들에게 묻습니다.

편집 : 동일한 문제 도메인을 가진 사람들을위한 매우 유용한 링크 (깨지지 않는 "돈"데이터 구조를 구현해야 함).

이것이 중복 된 질문이라고 말하는 다른 사람에 대한 편집 : 이것은 "최고의 것"에 대한 이론적 인 질문이 아닙니다. 내 질문의 수정되지 않은 제목을 읽으십시오. 은행 코드베이스에서 사람들이 직접 본 것을 묻습니다.

나는 BigDecimal이 분명히 "최고"라는 것을 알고 있지만, 그와 같은 멋진 API는 모든 곳에서 사용할 수 없으며 믿거 나 말거나 소수 라이브러리는 int와 달리 비싸다.


4
특별히 은행은 아니지만 은행의 종류. 몇 년 전 나는 거래와 지불을 다루는 시스템에서 일했고 우리는 완전히 새로운 데이터 유형, 두 개의 64 비트 정수로 구성된 클래스, 정수를 나타내는 숫자, 다른 하나는 소수 부분을 도입하여 플로트 버그를 피했습니다.
Andy

1
좋은 생각 인 데이비드 패커. 큰 숫자와 지수 (값의 log_10) : 나는 두 정수의 구조체이다 일반적인 구현,보다 더 나은 것 같아요
zelcon

1
질문은 네 번째 옵션이 필요합니다. BCD
Brendan

3
제목의 질문에 대답하기 위해 COBOL S9 (13) V99 COMP-3. 8 8 비트 바이트에 적합합니다.
길버트 르 블랑

2
여기있는 문제는 "어떤 은행"입니다. 그들은 COBOL, Java, C / C ++, .NET 등을 사용합니다-각각이 다른 유형을 사용함에 따라 알고 싶은 것에 대한 대답은 없습니다. 백업 스토리지에 대해 문의 할 수 있지만 사용 된 기술에 따라 Oracle 10 진수 유형 또는 메인 프레임 유형이 사용됩니다.
gbjbaanb

답변:


-2

대부분의 은행은 여전히 ​​메인 프레임에 있습니다. 메인 프레임의 데이터 유형은 오늘날의 표준과 매우 어색합니다. 문자로 인코딩 된 숫자 일 수 있습니다. 따라서 1234.56은 실제로 해당 숫자를 포함하는 문자열입니다. 문자는 4, 6 또는 9 비트 일 수 있습니다. 또는 "최적화 된"상황에서 한 문자에 두 자리 숫자가 채워질 수 있습니다. 결국 십진 문자에는 4 비트 (니블) 만 있으면됩니다.

지구상에서 이러한 솔루션을 어떻게 사용했는지 궁금하실 것입니다. 이들은 종종 하드웨어 아키텍처를 기반으로합니다. 우리는 여러 개의 8 비트 아키텍처에 익숙합니다. 옛날에는 이것이 주어지지 않았습니다.

Unisys는 36 비트 단어를 사용하며 데이터를 저장하기 전에 단어가 6 비트, 9 비트, 12 비트 또는 18 비트 부분으로 분리 될 수 있습니다.

더 이상이 물건을 다룰 필요가 없다는 것을 기뻐하십시오. .NET 프레임 워크에는 통화에 적합한 10 진수라는 멋진 유형이 있습니다.


1
@ gnat : 이것은 1 년 오래된 다소 자기 봉사입니다; 은행은 어떻게 재무 데이터를 유지합니까? 메인 프레임 .
길버트 르 블랑

2
" 1-메인 프레임의 데이터 유형은 오늘날의 표준과 매우 어색합니다. "-1 메인 프레임에 대해서는 아무것도 모릅니다. IEEE-754 플로트, 십진 데이터 등이 풍부합니다.
로스 패터슨

1
@Ross IEEE 754는 1985 년에 설립되었습니다. 많은 메인 프레임 소프트웨어가 훨씬 오래되었습니다. BCD 및 유사한 인코딩은 여전히 ​​활성 메인 프레임 시스템에서 매우 일반적입니다. 그리고 그들은 현대 인코딩과 잘 비교되지 않습니다. 그러나 질문에 대한 정답을 알려주십시오. 메인 프레임에 대해 많은 것을 알고 있습니다. 당신의 타이밍은 수십 년 전부터 사라진 것 같지만 ...
Martin Maat

1
.NET에는 Decimal이라는 멋진 유형이 있습니다.이 유형은 수백만 건의 트랜잭션을 처리 할 때 실제로 느리고 정확하지 않습니다. 우리가 그들의 고풍 적이지만 빠른 데이터 처리를 갖춘 메인 프레임을 가지고 있다는 점에 감사드립니다.
gbjbaanb

1
@MartinMaat Packed decimal은 1972 년에 프로그래밍을 시작할 때 통화 값에 가장 일반적이었습니다. IBM S / 360 제품군의 기본 데이터 유형이었으며 그 이전에는 1400 시리즈의 상용 옵션의 일부라고 생각합니다.
로스 패터슨
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.