在MySQL中存储不同格式的数字

在MySQL中存储不同格式的数字,mysql,database-design,Mysql,Database Design,我正在构建一个应用程序,允许用户以不同的货币格式输入值 我最初的想法是以以下格式保存数据 金额-字符串 货币-带有ISO 4217货币代码的字符串,例如英镑、美元、卢布 这种设计是个好主意,还是应该用于金额字段、整数、小数或浮点类型 我不确定不同的格式样式将如何影响存储。我将投票支持: 金额-十进制(18,4)->您当然可以根据需要更改大小。我对我的货币不太熟悉,无法告诉你需要多少小数位,所以我决定用4。我知道至少存在3个(请参阅) Currency-对货币表的外键引用 为什么选择FK参

我正在构建一个应用程序,允许用户以不同的货币格式输入值

我最初的想法是以以下格式保存数据

  • 金额-字符串
  • 货币-带有ISO 4217货币代码的字符串,例如英镑、美元、卢布
这种设计是个好主意,还是应该用于金额字段、整数、小数或浮点类型

我不确定不同的格式样式将如何影响存储。

我将投票支持:

  • 金额-
    十进制(18,4)
    ->您当然可以根据需要更改大小。我对我的货币不太熟悉,无法告诉你需要多少小数位,所以我决定用4。我知道至少存在3个(请参阅)
  • Currency-对货币表的外键引用
为什么选择FK参考和货币表?然后,您可以将更多信息与每种货币一起存储(例如,相关区域性或格式信息),并在必要时提供一个包含汇率的附加表,以便您可以将所有内容添加到一种基础货币中

此外,现在的仓库很便宜


注:

  • 我不会用一个字符串来表示数量,因为一个简单的事实是,你不能添加它们,也不能(轻松地)按它们订购。您还将丢失该金额确实是一个数字的内置验证

  • 我也不会选择浮动金额,因为货币金额应该是准确的。您不希望必须对每个结果进行四舍五入才能显示它;如果你在错误的方向上损失了一分钱怎么办

    • 我将投票支持:

      • 金额-
        十进制(18,4)
        ->您当然可以根据需要更改大小。我对我的货币不太熟悉,无法告诉你需要多少小数位,所以我决定用4。我知道至少存在3个(请参阅)
      • Currency-对货币表的外键引用
      为什么选择FK参考和货币表?然后,您可以将更多信息与每种货币一起存储(例如,相关区域性或格式信息),并在必要时提供一个包含汇率的附加表,以便您可以将所有内容添加到一种基础货币中

      此外,现在的仓库很便宜


      注:

      • 我不会用一个字符串来表示数量,因为一个简单的事实是,你不能添加它们,也不能(轻松地)按它们订购。您还将丢失该金额确实是一个数字的内置验证

      • 我也不会选择浮动金额,因为货币金额应该是准确的。您不希望必须对每个结果进行四舍五入才能显示它;如果你在错误的方向上损失了一分钱怎么办


        • 我选择十进制,但这可能取决于“金额”的应用

          • 这可能有助于理解浮点与十进制之间的差异:

          我选择十进制,但这可能取决于“金额”的应用

          • 这可能有助于理解浮点与十进制之间的差异:

          最好选择一种有意义的类型,而不仅仅是字符串,例如
          DECIMAL(8,2)
          使用DECIMAL类型将真正限制用户可以存储的数量。当然,您可以更改比例和精度,例如
          DECIMAL(40,5)
          。。。但是这个问题没有说明任何具体的意图。我有点说了?“允许用户以不同的货币格式输入值”,具体来说就是说你想要一些可以漂浮的东西,当我建议划船时,你就去“哇,那不适合我100名海盗的船员,枪在哪里?!”=如果你能选择一种有意义而不仅仅是字符串的类型,例如,
          DECIMAL(8,2),pIt将是最好的选择
          使用十进制类型确实会限制用户可以存储的数量。当然,您可以更改刻度和精度,例如
          十进制(40,5)
          。。。但是这个问题没有说明任何具体的意图。我有点说了?“允许用户以不同的货币格式输入值”这就像说你想要漂浮的东西一样具体,当我建议划船时,你就去“哇,那不适合我100名海盗的船员,枪在哪里?!”=谢谢货币表的建议,实际上,我也考虑过类似的做法,但在数据库之外使用JSON文件来组织信息。我试图找出的最大问题是小数位数和小数长度。感谢currency table的建议,我实际上考虑过类似的做法,但在数据库之外使用JSON文件来组织信息。我想找出的最大问题是小数位数和小数长度。