理想情况下,我应该如何在我的MySQL数据库中存储货币汇率信息?我应该使用:
货币汇率通常是十进制数,如1.2362。
答案 0 :(得分:2)
您需要多精确?我问,因为问题可能超出了转换因子的存储格式。例如,规则可能是将因子保持在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。正如我上面所指出的,这可能与银行计算的价格差不多一分钱。
(你会称之为“基于意见”吗?还是更好的东西?)