我需要在 PHP 中加、乘和比较货币值,并且需要确保它精确到一美分。
一种方法是将所有内容存储在 float 中,在每次操作之前和之后使用round,并在比较相等时使用mind machine epsilon。相当麻烦恕我直言。
另一种方法是将整个数据存储为整数数据类型中的美分,并且记得在我使用数据库(mysql,我使用十进制数据类型)的任何时候来回转换。不优雅,还有很多错误陷阱,恕我直言。
另一种方法是发明我自己的“数据类型”,将所有值存储在字符串中(“34.12”)并创建我自己的数学替换函数。这些函数将在内部将值转换为整数,进行计算并再次将结果输出为字符串。非常复杂,恕我直言。
我的问题:在 PHP 中处理货币值的最佳实践是什么? 谢谢!
最佳答案
从 MySQL v5.0.3 开始,MySQL 的 DECIMAL
数据类型存储精确的十进制数,即不是不准确的浮点表示。
要在 PHP 中正确操作精度数字,请使用 arbitrary precision math functions .该库在内部操作文本字符串。
货币旨在存储为十进制数,您可以获得小于美分的货币单位。您应该只在显示数字时四舍五入任何值,而不是在操作或存储期间。
关于php - 在 PHP 中处理货币值的最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3819508/