Tôi biết một vài lựa chọn tốt :
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ệ .
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 ++
Dây.
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ỡ).
- http://martinfowler.com/eaaDev/quantity.html
- http://www.codeproject.com/Articles/28244/A-Money-type-for-the-CLR
- http://c2.com/cgi/wiki?MoneyObject
- http://www.setfiremedia.com/blog/7-top-tips-for-coding-with-currency
- http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html
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.