Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql数据类型赚钱_Mysql_Sqldatatypes_Currency - Fatal编程技术网

Mysql数据类型赚钱

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数据类型是decimal(19,4)。现在的问题是,很少有货币需要三个精度,有些需要两个精度 如: 这需要三个精度。ie 1000贝萨=1阿曼里亚尔。因此,我的客户可以输入6.783阿曼里亚尔。 其中,我的美国客户只需要2个精度,100美分=1美元,他们可以输入5.50

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

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


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

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


我建议您使用
十进制(19,4)
,然后在应用程序代码中格式化值,以适当的数字显示。每种编程语言都有一些函数,如
printf()
,允许您控制输出格式,而不管存储的值是什么。

如何跟踪适当的数字?我是否需要创建一个新的列来跟踪句点后的位数。Ie如果是6.783,我是否需要保存3?声明列类型的精度,该精度将由需要最多位数精度的货币使用。所有其他货币也可以使用此数据类型。应用程序必须包含逻辑,以便根据货币类型对值进行不同的格式设置。请注意,
十进制(..,4)
仅比
(..,2)
多占用1个字节,因此不会浪费太多空间。我同意由应用程序去除不需要的尾随零。Hmmm。谢谢大家:)