在MySQL中存储不同格式的数字
我正在构建一个应用程序,允许用户以不同的货币格式输入值 我最初的想法是以以下格式保存数据在MySQL中存储不同格式的数字,mysql,database-design,Mysql,Database Design,我正在构建一个应用程序,允许用户以不同的货币格式输入值 我最初的想法是以以下格式保存数据 金额-字符串 货币-带有ISO 4217货币代码的字符串,例如英镑、美元、卢布 这种设计是个好主意,还是应该用于金额字段、整数、小数或浮点类型 我不确定不同的格式样式将如何影响存储。我将投票支持: 金额-十进制(18,4)->您当然可以根据需要更改大小。我对我的货币不太熟悉,无法告诉你需要多少小数位,所以我决定用4。我知道至少存在3个(请参阅) Currency-对货币表的外键引用 为什么选择FK参
- 金额-字符串
- 货币-带有ISO 4217货币代码的字符串,例如英镑、美元、卢布
- 金额-
->您当然可以根据需要更改大小。我对我的货币不太熟悉,无法告诉你需要多少小数位,所以我决定用4。我知道至少存在3个(请参阅)十进制(18,4)
- Currency-对货币表的外键引用
注:
- 我不会用一个字符串来表示数量,因为一个简单的事实是,你不能添加它们,也不能(轻松地)按它们订购。您还将丢失该金额确实是一个数字的内置验证
- 我也不会选择浮动金额,因为货币金额应该是准确的。您不希望必须对每个结果进行四舍五入才能显示它;如果你在错误的方向上损失了一分钱怎么办
- 金额-
->您当然可以根据需要更改大小。我对我的货币不太熟悉,无法告诉你需要多少小数位,所以我决定用4。我知道至少存在3个(请参阅)十进制(18,4)
- Currency-对货币表的外键引用
- 我不会用一个字符串来表示数量,因为一个简单的事实是,你不能添加它们,也不能(轻松地)按它们订购。您还将丢失该金额确实是一个数字的内置验证
- 我也不会选择浮动金额,因为货币金额应该是准确的。您不希望必须对每个结果进行四舍五入才能显示它;如果你在错误的方向上损失了一分钱怎么办
- 这可能有助于理解浮点与十进制之间的差异:
- 这可能有助于理解浮点与十进制之间的差异:
- 我将投票支持:
注:
- 我选择十进制,但这可能取决于“金额”的应用
我选择十进制,但这可能取决于“金额”的应用
最好选择一种有意义的类型,而不仅仅是字符串,例如
DECIMAL(8,2)
使用DECIMAL类型将真正限制用户可以存储的数量。当然,您可以更改比例和精度,例如DECIMAL(40,5)
。。。但是这个问题没有说明任何具体的意图。我有点说了?“允许用户以不同的货币格式输入值”,具体来说就是说你想要一些可以漂浮的东西,当我建议划船时,你就去“哇,那不适合我100名海盗的船员,枪在哪里?!”=如果你能选择一种有意义而不仅仅是字符串的类型,例如,DECIMAL(8,2),pIt将是最好的选择
使用十进制类型确实会限制用户可以存储的数量。当然,您可以更改刻度和精度,例如十进制(40,5)
。。。但是这个问题没有说明任何具体的意图。我有点说了?“允许用户以不同的货币格式输入值”这就像说你想要漂浮的东西一样具体,当我建议划船时,你就去“哇,那不适合我100名海盗的船员,枪在哪里?!”=谢谢货币表的建议,实际上,我也考虑过类似的做法,但在数据库之外使用JSON文件来组织信息。我试图找出的最大问题是小数位数和小数长度。感谢currency table的建议,我实际上考虑过类似的做法,但在数据库之外使用JSON文件来组织信息。我想找出的最大问题是小数位数和小数长度。