Ion*_*Br. 19 php mysql currency decimal floating-accuracy
因此,我打算制作一个应用程序(PHP/MySQL),它可以节省大量资金,我正在考虑如何存储和操作钱,参考PHP浮点数据类型和MySQL十进制.
我在考虑两种选择.其中之一是以整数分钱格式($ dollar*100)操作和存储货币,以便不处理浮动预处理并将其作为整数存储在DB中.另一个是以DB为单位存储在十进制中,并在PHP中使用BC Math进行计算.
所以我一整天都在谷歌搜索哪个是最好的选择,并没有找到明确的答案.我见过的唯一合理的选择是整数美分(我不喜欢它,因为它意味着在浏览器中的每次显示之前以及存储在数据库之前,很多都会从美元转换为美分和反之亦然).
此外,人们抱怨MySQL十进制(MySQL将小数存储为字符串,将它们作为浮点数等操作),但那是旧帖子.根据MySQL文档,当前版本正确处理小数,唯一的抱怨是它截断超过声明的分数长度的值的分数(例如,如果在声明为十进制的列(9,2)中存储值12.326) ,但是从我的调查来看,它不仅仅是截断(12.326变为12.33),这在我看来是正确的.
并且,我没有找到任何关于将钱存储为小数并使用PHP BCMath进行计算的建议,并且在我看来这是因为很少有人知道BC和GMP数学函数.
那么,考虑到精度,速度(BCMath计算速度,MySQL十进制速度与整数)和编程舒适度,最佳选择是什么?
我肯定会选择使用整数并通过数据对象 (ORM) 样式路由所有内容,然后由该样式为您处理所有转换。使用数据对象的客户端代码永远不需要进行转换,也不会关心,而您不会遇到存储问题,因为数据库可以轻松处理整数。此外,您可以轻松地添加货币对象所需的任何其他方法(例如货币类型之间的转换等)。
归档时间: |
|
查看次数: |
5257 次 |
最近记录: |