Mysql 货币数据类型

Mysql datatype for money

我正在尝试创建一个与金钱相关的应用程序,用户可以在其中选择他们的货币。 Mysql 我试过的数据类型是十进制 (19,4)。现在的问题是很少有货币需要三个精度,有些需要两个 例如: 阿曼里亚尔需要三个精度。即 1000 baisa = 1 阿曼里亚尔。因此我的客户可以输入 6.783 阿曼里亚尔。 我的美国客户只需要 2 个精度,因为 100 美分 = 1 美元,他们可以输入 5.50。

当我使用 decimal(19,4) 将这两个条目插入我的数据库时,它分别保存为 6.7830 和 5.5000。

现在真正的痛苦是当我需要显示他们的条目时,因为我不想在阿曼里亚尔条目中显示额外的 0 而在美元中显示 00。我也试过 float 但最后一位数字有时会四舍五入。

是否有任何 mysql 数据类型,我可以在其中保存准确的条目,而无需任何舍入或额外的零?如果没有这样的条目,我怎样才能让它成为可能?

您可以使用 VARCHAR 来存储精确表示,但我不建议这样做,因为将数字存储为字符串需要更多字节。你对这个值做的任何运算都会把它转换成一个数字。

我建议您使用 DECIMAL(19,4),然后在应用程序代码中格式化该值,以使用适当的数字显示它。每种编程语言都有像 printf() 这样的函数,可以让您控制输出格式,而不管存储的值是什么。