在MySQL数据库中存储货币值

Dav*_*nes 12 mysql currency

这个问题之前已被多次提出过,但我发现有关该主题的意见相互矛盾,所以我想我会再次提出这个问题,希望得到更统一的结论.

我想在我的数据库中存储货币值.假设所有条目都是相同类型的货币(例如美元),并且允许正值和负值.

我最初的想法是将值作为有关货币的最小单位的有符号整数存储.例如,如果我想存储价值$ 1.25,我会插入125数据库,因为最小的美元单位是0.01美元.这个方法的好处是MySQL将自动舍入到最接近的整数.例如,如果美元价值为1.259美元,我可以插入125.9,这将自动舍入并存储为1261.26美元.

所以你怎么看?这是一个合理的方法还是有更好的方法?

Dav*_*idO 13

财务数据可以存储为DECIMAL(p,s)其中p是有效位数,s是比例(小数点右边的位数).请参阅MySQL文档.

同样来自O'Reilly的高性能MySQL,第3章:

"......只有在需要精确的小数数字结果时才应使用DECIMAL - 例如,存储财务数据时."

来自O'Reilly的学习MySQL:

DECIMAL 是,"...一种常用的数字类型.存储定点数字,如薪水或距离......"

MySQL Pocket参考:

DECIMAL "......存储精度至关重要的浮点数,例如货币价值."