2016-12-03 79 views
0

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

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

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

是否有任何mysql数据类型,我可以保存精确的条目,因为它是没有任何舍入或额外的零?如果没有这样的入口,我怎么才能让它变得可爱?

回答

0

您可以使用VARCHAR来存储确切的表示,但我不建议这么做,因为它需要更多的字节来将一个数字存储为一个字符串。而且,对值进行的任何运算都会将其转换为数字。

我建议您使用DECIMAL(19,4),然后在应用程序代码中格式化该值,以显示相应的数字。每种编程语言都有一些功能,如printf(),它允许您控制输出格式,而不管存储的值如何。

+0

我如何追踪适当的数字?我是否需要创建一个新的色彩来跟踪时段后的数字位数。即6.783的情况下,我需要保存3吗? – Rishad

+1

声明列类型,其精度将由需要最高精度位数的货币使用。所有其他货币也可以使用这种数据类型。您的应用程序必须包含根据货币类型对值进行格式设置的逻辑。 –

+0

请注意'DECIMAL(..,4)'只比'(..,2)'多一个字节,所以不会浪费太多空间。我同意这是取决于应用程序去除不需要的尾随零。 –