Mysql数据类型赚钱
我试图创建一个与金钱相关的应用程序,用户可以在其中选择他们的货币。我尝试过的Mysql数据类型是decimal(19,4)。现在的问题是,很少有货币需要三个精度,有些需要两个精度 如: 这需要三个精度。ie 1000贝萨=1阿曼里亚尔。因此,我的客户可以输入6.783阿曼里亚尔。 其中,我的美国客户只需要2个精度,100美分=1美元,他们可以输入5.50 当我使用decimal(19,4)将这两个条目插入数据库时,它分别保存为6.7830和5.5000 现在真正的痛苦是当我需要显示他们的入口,因为我不想显示额外的0在阿曼里亚尔条目和00在美元。我也试过浮动,但最后一个数字有时会被舍入Mysql数据类型赚钱,mysql,sqldatatypes,currency,Mysql,Sqldatatypes,Currency,我试图创建一个与金钱相关的应用程序,用户可以在其中选择他们的货币。我尝试过的Mysql数据类型是decimal(19,4)。现在的问题是,很少有货币需要三个精度,有些需要两个精度 如: 这需要三个精度。ie 1000贝萨=1阿曼里亚尔。因此,我的客户可以输入6.783阿曼里亚尔。 其中,我的美国客户只需要2个精度,100美分=1美元,他们可以输入5.50 当我使用decimal(19,4)将这两个条目插入数据库时,它分别保存为6.7830和5.5000 现在真正的痛苦是当我需要显示他们的入口,因
是否有任何mysql数据类型,我可以保存准确的条目,而不需要任何舍入或额外的零?如果没有这样的条目,我如何才能使其成为可能?您可以使用
VARCHAR
来存储精确的表示,但我不建议这样做,因为将数字存储为字符串需要更多字节。你对这个值做的任何运算都会把它转换成一个数字
我建议您使用
十进制(19,4)
,然后在应用程序代码中格式化值,以适当的数字显示。每种编程语言都有一些函数,如printf()
,允许您控制输出格式,而不管存储的值是什么。如何跟踪适当的数字?我是否需要创建一个新的列来跟踪句点后的位数。Ie如果是6.783,我是否需要保存3?声明列类型的精度,该精度将由需要最多位数精度的货币使用。所有其他货币也可以使用此数据类型。应用程序必须包含逻辑,以便根据货币类型对值进行不同的格式设置。请注意,十进制(..,4)
仅比(..,2)
多占用1个字节,因此不会浪费太多空间。我同意由应用程序去除不需要的尾随零。Hmmm。谢谢大家:)