PHP/MySQL: 最佳资金操作/存储实践?

29 浏览
0 Comments

PHP/MySQL: 最佳资金操作/存储实践?

我计划制作一个处理大量资金的应用程序(PHP/MySQL),并且正在考虑如何存储和操作资金,涉及到PHP的浮点数据类型和MySQL的十进制类型。

我考虑了两个选项。其中一个选项是以整数分格式($dollars * 100)操作和存储资金,以避免处理浮点数不精确性,并将其作为整数存储在数据库中。另一个选项是将其以十进制形式存储在数据库中,并在PHP中使用BC Math进行计算。

因此,我整晚在Google上搜索,以找出最佳的使用选项,但没有找到明确的答案。

我看到的唯一合理的选项是整数分的选项(我并不是特别喜欢,因为这意味着在每次在浏览器中显示之前和存储在数据库中之前都需要进行从美元到分的转换),此外,人们抱怨MySQL的十进制类型(MySQL将十进制数存储为字符串,将其作为浮点数进行操作等),但这些都是一些旧的帖子。根据MySQL的文档,当前版本可以正确处理十进制数,唯一的抱怨是如果超出了声明的小数位数,它会截断值的小数部分(例如,如果将一个值12.326存储在声明为decimal(9,2)的列中),但从我的调查中发现它会将其四舍五入(12.326变为12.33),在我看来这是正确的。

而且,我没有找到任何关于以十进制形式存储资金并使用PHP BCMath进行计算的建议,我认为这是因为很少有人了解BC和GMP数学函数。

那么,考虑到精度、速度(BCMath计算速度、MySQL十进制速度与整数速度)和编程舒适性,什么是最佳选择?

0