Những gì các ngân hàng thực sự sử dụng như một loại dữ liệu cho tiền? [đóng cửa]


9

Tôi biết một vài lựa chọn tốt :

  1. Số nguyên lớn (ví dụ, int64_t, mpz_t, bất kỳ bignum lib ) để đại diện cho cent, tương đương 10 -n cent-nói, một số nguyên đại diện 1/100 của một đồng xu ($ 1.05 == 10500). Đây được gọi là một số nguyên tỷ lệ .

  2. Thư viện cấp cao cho số học thập phân chính xác tùy ý như BigDecimal trong Java, Decimal in Python, binary.js trong Javascript, boost :: Multiprecision trong C ++

  3. Dây.

  4. BCD đóng gói (số thập phân được mã hóa nhị phân) là một phương pháp bí truyền hơn có vẻ phổ biến trong phần mềm cũ. Đọc thêm về nó.

Trong mã sản xuất cho ngân hàng (hoặc thẻ tín dụng, ATM, hệ thống POS), loại dữ liệu nào thực sự được sử dụng nhiều nhất? Tôi đặc biệt hỏi những người làm việc cho ngân hàng.

EDIT: Liên kết siêu hữu ích cho những người có cùng miền vấn đề (cần triển khai cấu trúc dữ liệu "tiền" không bị phá vỡ).

EDIT cho những người nói đây là một câu hỏi trùng lặp : Đây là một câu hỏi thực tế không phải là một câu hỏi lý thuyết về "những gì tốt nhất". Đọc tiêu đề chưa được chỉnh sửa của câu hỏi của tôi. Tôi đang hỏi những gì mọi người đã thấy tận mắt trong các cơ sở mã của ngân hàng.

Tôi biết BigDecimal là "tốt nhất" rõ ràng, nhưng các API đẹp như thế không có sẵn ở mọi nơi, tin hay không, và các thư viện thập phân đắt tiền so với ints.


4
Loại ngân hàng liên quan mặc dù không đặc biệt cho một ngân hàng. Cách đây vài năm, tôi đã làm việc trên một hệ thống xử lý các giao dịch và thanh toán và chúng tôi đã phá vỡ các số float bằng cách giới thiệu một kiểu dữ liệu hoàn toàn mới, một lớp, bao gồm không chỉ hai số nguyên 64 bit, một số đại diện cho toàn bộ số, phần còn lại là phần thập phân.
Andy

1
David Packer đó là một ý tưởng tuyệt vời. Tôi nghĩ rằng nó có thể tốt hơn so với triển khai chung, đó là cấu trúc của hai số nguyên: một số lớn và số mũ (giá trị log_10)
zelcon 14/2/2016

1
Câu hỏi cần có tùy chọn thứ 4: BCD
Brendan

3
Để trả lời câu hỏi trong tiêu đề, một chiếc COBOL S9 (13) V99 COMP-3. Phù hợp với 8 byte 8 bit.
Gilbert Le Blanc

2
Vấn đề bạn có ở đây là "ngân hàng nào". họ sử dụng COBOL, Java, C / C ++, .NET, v.v. - không có câu trả lời nào phù hợp với những gì bạn muốn biết vì mỗi loại này sử dụng các loại khác nhau. Bạn có thể hỏi về lưu trữ sao lưu, nhưng ngay cả các loại thập phân của Oracle hoặc một loại máy tính lớn sẽ được sử dụng tùy thuộc vào công nghệ được sử dụng.
gbjbaanb

Câu trả lời:


-2

Hầu hết các ngân hàng vẫn còn trên máy tính lớn. Các kiểu dữ liệu trên máy tính lớn rất vụng về với các tiêu chuẩn ngày nay. Chúng có thể chỉ là các chữ số được mã hóa dưới dạng ký tự. Vì vậy, 1234.56 sẽ thực sự là một chuỗi chứa các chữ số đó. Và một ký tự có thể là 4, 6 hoặc 9 bit. Hoặc, trong các tình huống "tối ưu hóa", có thể có hai chữ số được đóng gói trong một ký tự. Rốt cuộc, bạn chỉ cần 4 bit (một nibble) cho một ký tự thập phân.

Bạn sẽ tự hỏi làm thế nào trên trái đất họ từng đến với các giải pháp này. Chúng thường dựa trên kiến ​​trúc phần cứng. Chúng tôi đã quen với nhiều kiến ​​trúc 8 bit. Ngày xưa, đây không phải là một sự cho trước.

Unisys sử dụng các từ 36 bit và các từ có thể được chia thành các phần 6 bit, 9 bit, 12 bit hoặc 18 bit trước khi chúng được sử dụng để lưu trữ dữ liệu.

Hãy vui mừng vì chúng ta sẽ không phải đối phó với những thứ này nữa. .NET framework có một loại tốt gọi là thập phân, tốt cho tiền tệ.



2
-1 cho " Kiểu dữ liệu trên máy tính lớn rất vụng về với các tiêu chuẩn ngày nay. " Rõ ràng bạn không biết gì về máy tính lớn. IEEE-754 nổi, dữ liệu thập phân, vv rất nhiều.
Ross Patterson

1
@Ross IEEE 754 được thành lập vào năm 1985. Rất nhiều phần mềm máy tính lớn đã cũ hơn nhiều. BCD và mã hóa tương tự vẫn còn rất phổ biến trong các hệ thống máy tính lớn đang hoạt động. Và họ không so sánh tốt với mã hóa hiện đại. Nhưng xin vui lòng, cho chúng tôi câu trả lời đúng cho câu hỏi. Bạn rõ ràng biết rất nhiều về máy tính lớn. Mặc dù thời gian của bạn dường như bị tắt trong một vài thập kỷ ... Khai sáng cho chúng tôi.
Martin Maat

1
.NET có một loại tốt gọi là Decimal .. rất chậm và không thực sự hữu ích khi xử lý hàng triệu giao dịch. Cảm ơn chúa, chúng tôi có máy tính lớn với việc xử lý dữ liệu cổ xưa nhưng nhanh chóng.
gbjbaanb

1
@MartinMaat Số thập phân được đóng gói là phổ biến nhất đối với các giá trị tiền tệ, khi tôi bắt đầu lập trình vào năm 1972. Đó là một kiểu dữ liệu cơ bản trong gia đình S / 360 của IBM và tôi tin rằng đó là một phần của tùy chọn thương mại trên loạt 1400 trước đó.
Ross Patterson
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.