MySQL中货币汇率的理想数据类型
Posted
技术标签:
【中文标题】MySQL中货币汇率的理想数据类型【英文标题】:Ideal data type for currency rate in MySQL 【发布时间】:2015-08-17 07:10:25 【问题描述】:在我的 mysql 数据库中存储货币汇率信息的理想方法是什么?我应该使用:
双 像 (10,4) 这样的小数 浮动或 还有别的吗?汇率通常是十进制数字,例如 1.2362。
【问题讨论】:
可能基于意见,但应该是十进制或整数,位数分开存储 是的,我想听听意见 :-),谢谢 【参考方案1】:您需要精确到什么程度?我问是因为问题可能超出了转换因子的存储格式。例如,规则可能是将因子保持在 N 个小数位,执行乘法(或除法)到 M 位,然后舍入。而“四舍五入”可能是“财务”——0.5 总是向上取整,而不是 IEEE-754,“四舍五入到最接近的偶数”。
假设你能负担得起最后一个单位(美分或生丁或其他),我会简单地使用DOUBLE
。
我假设您存储的转换因子不会超过 100 个,因此DOUBLE
占用 8 个字节这一事实不会成为问题。如果您记录过去 10 年每分钟的转换因子,我会重新考虑这个决定。
FLOAT
为您提供 6-7 个有效位数字(并占用 4 个字节); DOUBLE
大约是 16。12345
和 123.45
和 0.00012345
各有 5 个“有效”数字。
对于货币本身,我认为今天任何货币的最大小数位数是 4。也就是说,DECIMAL(nn, 4)
应该足以存储资金。
但是,这并没有提供必要的舍入。
ROUND(currency1 * factor, decimals)
其中decimals
是 2,表示目标货币为美元和欧元(以及许多其他货币)。正如我在上面所指出的,这可能与银行的计算结果相差 1 美分。
(你会称之为“基于意见”吗?还是更好的说法?)
【讨论】:
我将保留最多 4 位小数。这就是我们的银行为我们提供货币汇率的方式。例如:1.2450。我选择了 DECIMAL(10,4)。我喜欢你的回答。以上是关于MySQL中货币汇率的理想数据类型的主要内容,如果未能解决你的问题,请参考以下文章