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

How to handle and/or store money values in web applications?

我在 Laravel 4 和 MySQL 中使用 PHP,但我不确定如何处理货币价值。

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

  120,50€
1.000,50€

金额字段的类型为DECIMAL(12,2)

我应该像 12050 那样存钱还是像 120,50 那样存钱?

我推荐的是使用 :

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

  • 美分 (100050) 在计算中

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


更多详情

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

美分非常适合计算,因为它允许您在计算中将您的货币价值视为整数,这更实用(特别是对于除法和乘法),并且通常是您想要的货币水平要向上或向下舍入的值。

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