如何在Web应用程序中处理和/或存储货币值?

Wil*_*enz 0 php mysql currency money-format laravel

我在Laravel 4和MySQL中使用PHP,我不知道如何处理货币价值.

我想用这种格式显示它们:

  120,50€
1.000,50€
Run Code Online (Sandbox Code Playgroud)

金额字段是类型DECIMAL(12,2).

我应该保存喜欢12050或喜欢的金额120,50吗?

Joh*_*ers 6

我建议使用的是:

  • 数据库中的十进制欧元值(1000.50)

  • 美分(100050)在计算中

  • 显示中的格式化字符串(1.000,50€)给用户


更多细节

对于在MySQL数据库中存储字段,类似的东西DECIMAL(12,2)非常有意义.这是一个具有正确的percision(两位小数)的数值,允许您存储任何货币值,最大为9999999999.99.

分数非常适合计算,因为它允许您将货币值视为计算中的整数,这更适合使用(特别是对于除法和乘法),并且通常是您希望将货币值四舍五入的水平或者到.

无论您如何将数据存储在数据库中或如何进行计算,您都希望用户以他们熟悉的格式查看数量.例如,美元通常格式为1,000.50美元,欧元格式为1.000,50欧元.

  • 如果所有计算都是欧元,那么DECIMAL(12,2)就可以了.但是,如果要使用其他货币,则需要记住,某些货币不使用2位小数.有些人没有,有的有3人,有的有4人.https://en.wikipedia.org/wiki/ISO_4217#Active_codes (2认同)