- Thao tác với số tiền là một tác vụ tính toán phổ biến, nhưng các ngôn ngữ lập trình chủ đạo không có kiểu dữ liệu cơ bản để biểu diễn số tiền
- Điều này có thể gây ra các vấn đề làm tròn trong những tác vụ như thanh toán trả góp, giao dịch ngoại hối, xử lý phí và thu thuế
- Money là một thư viện Kotlin giúp việc tính toán và phân bổ số tiền trở nên dễ dàng hơn
- Hỗ trợ các phép toán số học với số tiền, tính phần trăm và phân bổ để mô hình hóa nhiều trường hợp sử dụng khác nhau
- Cũng hỗ trợ tiền mã hóa theo mặc định
- Tính năng phân bổ
- Một trong những ưu điểm lớn nhất của thư viện là tính năng phân bổ
- Chia số tiền thành nhiều phần trong khi vẫn đảm bảo tổng bằng đúng số tiền ban đầu
- Ví dụ, khi khách hàng thanh toán một khoản mua hàng trị giá USD 100.00 thành ba kỳ trả góp, có thể tránh thất thoát do vấn đề làm tròn
- Cách phân bổ
- Sử dụng phương thức
allocate() để đảm bảo kết quả không chênh lệch so với số tiền gốc.
- Để phân bổ theo tỷ lệ, truyền vào một danh sách các giá trị
Percentage.
- Mặc định, thư viện sẽ tự động phân bổ phần chênh lệch, nhưng cũng có thể điều chỉnh bằng chiến lược phân bổ mong muốn.
- Kết lại
- Bài viết này chỉ giới thiệu ngắn gọn về các tính năng của thư viện.
- Có kế hoạch giữ API ngắn gọn, đồng thời từng bước mở rộng hỗ trợ phát triển Android cũng như các tính năng persistence và serialization.
- Hy vọng phiên bản hiện tại sẽ hữu ích cho những ai thao tác với số tiền trong các dự án Kotlin.
Tổng hợp của GN⁺
- Xử lý số tiền là một công việc phổ biến trong lập trình, nhưng có thể trở nên phức tạp do các vấn đề làm tròn.
- Thư viện Money là một thư viện Kotlin được thiết kế để giải quyết những vấn đề này, hỗ trợ phân bổ và tính toán số tiền một cách chính xác.
- Thư viện này hỗ trợ 306 loại tiền tệ và 2283 loại tiền mã hóa, rất hữu ích khi xử lý số tiền trong các dự án Kotlin.
- Một dự án khác có chức năng tương tự là thư viện Joda-Money của Java.
1 bình luận
Ý kiến trên Hacker News
Việc dùng hàm infix tạo cảm giác hơi kỳ lạ
plusvàminusthay vìincreaseByvàdecreaseByChúc mừng thư viện và cảm ơn vì đã chia sẻ
Gợi nhớ đến tính tiện dụng của kiểu tiền tệ trong Rebol
Câu hỏi về các trường hợp biên phát sinh khi xử lý tiền tệ
Thích việc hỗ trợ tiền tệ tùy chỉnh
Thật lạ khi ngôn ngữ bảng tính lại không hỗ trợ tiền tệ tốt
Kiểu
decimalcủa C# phù hợp cho tính toán tiền tệĐã học được rất nhiều từ phần bình luận và điều đó sẽ giúp ích cho lần lặp tiếp theo của thư viện
Muốn có một bộ kiểm thử kỹ lưỡng bao quát mọi trường hợp biên hơn là bản thân thư viện
uint64,size_t, v.v.Có vẻ như thư viện đáp ứng đầy đủ các yêu cầu và có một cuộc thảo luận hay về những khó khăn chính trong xử lý tiền tệ