2017-11-21 18 views
6

Bây giờ tôi lưu trữ trường balance trong MySQL như decimial(15, 2). Và trong PHP, tôi sử dụng thư viện bcmath cho các hoạt động:Làm thế nào để làm việc với các giá trị tiền trong PHP và MySQL?

bccomp($currentBalance, 100.15, 2) - để kiểm tra xem người dùng có đủ tiền hay không. bcadd($currentBalance, 100) - để tăng số dư của người dùng.

và vv

này đang làm việc một cách chính xác, nhưng BCMath doc nói:

Đi qua các giá trị kiểu float để một hàm BCMath đó sẽ là một chuỗi như toán hạng có thể không có hiệu quả mong muốn do cách PHP chuyển đổi giá trị float thành chuỗi, cụ thể là chuỗi có thể là ký hiệu lũy thừa (không được BCMath hỗ trợ) và phân tách thập phân là phụ thuộc miền địa phương (trong khi BCMath luôn mong đợi dấu thập phân).

Vì vậy, tôi muốn tránh những điều bất ngờ. Cách thích hợp để xử lý tiền là gì?

Trả lời

6

Là số nguyên. Chuyển đổi 100.15 thành 10015 và theo dõi đơn vị tiền tệ để bạn biết số lượng chữ số thập phân cần áp dụng khi hiển thị.

Các vấn đề liên quan