所以,我打算让这涉及了很多钱的应用程序(PHP / MySQL的),和我在想如何存储和使用金钱运作,指的是PHP浮点数据类型和MySQL小数。
我在想两个选项。 其中之一是操作和($美元* 100)存储的钱整数美分格式,以便不应对浮动inprecisions并将其存储在数据库中的整数了。 另一种是在数据库存储为十进制和使用BC数学在PHP中进行计算。
所以,我用Google搜索了一夜,以找出哪些是使用最好的选择,并没有找到一个明确的答案。 我见过的唯一合理的选择是整数美分一个(我真的不喜欢,因为这将意味着很多在浏览器中每个显示之前,从美元转换为美分,反之亦然,并在数据库中存储之前)。
另外,人们(MySQL的存储小数位的字符串,操作它们作为花车等)抱怨MySQL的小数,但都是旧的帖子。 据MySQL文档,目前的版本正确处理小数,唯一的抱怨是,它截断超过申报部分长度值的分数(例如,如果你存储在一个声明的12.326值十进制(9,2)) ,但是从我的调查,便将它,而不是仅仅截断(12.326变为12.33),这在我看来是正确的。
而且,我也没有找到钱存放为小数的任何建议,并使用PHP bcmath时进行计算,而在我看来,这是因为少数人知道BC和GMP数学函数。
那么,什么是使用最好的选择,考虑到精度,速度(bcmath时计算速度,MySQL的十进制速度VS整数)和编程安慰?