Tôi đã lo lắng về cách xử lý hiển thị tiền tệ và toán học trong PHP, và trong một thời gian dài đã được lưu trữ trong MySQL bằng cách sử dụng loại DECIMAL
và sử dụng money_format()
để định dạng nó để hiển thị trên trang web. Tuy nhiên, hôm nay tôi đã xem mẫu thử nghiệm thực tế:Nếu xử lý tiền trong một phao là xấu, thì tại sao money_format() làm điều đó?
string money_format (string $format , float $number)
Tôi hơi bối rối một chút. Tất cả những gì tôi được bảo là tránh nổi tiền! Nhưng ở đây nó là, chức năng định dạng cơ bản (nói rằng năm lần nhanh), đúc đầu vào cho một phao. number_format()
cũng vậy.
Vì vậy, câu hỏi của tôi là:
Trừ khi tôi đang đối phó với xu phân đoạn hoặc hàng nghìn tỷ đô la (và tôi đang đối phó với không), tôi nên quan tâm chút nào về hiển thị và lưu trữ (nhưng không bao giờ làm toán) tiền tệ được đúc thành một phao? Tôi có bao giờ đến gần khu vực có điểm không chính xác nổi thay đổi số liệu của tôi không?
Nếu câu trả lời cho # 1 là tôi thực sự nên quan tâm, thì tại sao là
money_format()
được xây dựng theo cách này?
Hầu hết nguy cơ chuyển đổi nổi đến từ khi thực hiện toán học với các phao đó. 'number_format()' chỉ đơn giản là thực hiện chuyển đổi kiểu "in đẹp", vì vậy bất kỳ số thập phân lặp lại kỳ lạ nào được tạo ra bởi quá trình float-ification rất khó có thể ảnh hưởng đến kết quả. –
PHP hầu như không phải là hình ảnh thu nhỏ của "các phương pháp hay nhất". – Gabe
những gì @markb nói. – time4tea