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。12345123.450.00012345 各有 5 个“有效”数字。

对于货币本身,我认为今天任何货币的最大小数位数是 4。也就是说,DECIMAL(nn, 4) 应该足以存储资金。

但是,这并没有提供必要的舍入。

ROUND(currency1 * factor, decimals)

其中decimals 是 2,表示目标货币为美元和欧元(以及许多其他货币)。正如我在上面所指出的,这可能与银行的计算结果相差 1 美分。

(你会称之为“基于意见”吗?还是更好的说法?)

【讨论】:

我将保留最多 4 位小数。这就是我们的银行为我们提供货币汇率的方式。例如:1.2450。我选择了 DECIMAL(10,4)。我喜欢你的回答。

以上是关于MySQL中货币汇率的理想数据类型的主要内容,如果未能解决你的问题,请参考以下文章

加密货币 MySQL 数据类型?

从数据库中选择多个货币代码的最新汇率的最佳方式

在 MySQL 数据库中存储纬度/经度时使用的理想数据类型是啥?

Pandas数据阅读器更新,获取FRED货币汇率

在哪里以及如何存储货币汇率?

mysql 如果处理货币金钱类型