在小数列中存储金钱:精度和小数位考虑因素
数据库设计者经常面临为小数选择适当的精度和小数位的困境用于存储货币值的列。本文探讨了所涉及的注意事项,并深入了解了不同场景的最佳值。
高效存储的精度和规模
虽然固定宽度的字符列可以提高效率好处,小数列也有其优点。然而,精度和小数位数并不一定越低,存储效率就越高。
推荐的精度和小数位数
对于一般用途,DECIMAL(19, 4)是普遍接受的选择。这源于 VBA/Access/Jet 中的历史货币数据类型以及支持银行舍入的需要,从而允许自定义舍入算法。
过度杀伤还是不够?
DECIMAL(24,8) 对于大多数货币应用程序来说似乎过多,因为大多数货币的报价都带有四位或五位小数。在需要扩展精度的场景中,建议考虑浮点类型,因为它们可以处理更广泛的值。
会计规则和注意事项
To为了确保准确性和合规性,咨询领域专家和会计准则至关重要。不同的司法管辖区可能对货币价值的舍入和精度有具体规定。例如,欧盟国家内传输可能规定使用 DECIMAL(p,6) 进行存储。
避免 SQL Server 的 MONEY 数据类型
MONEY 数据类型SQL Server 中存在已知的准确性和舍入问题。相反,建议使用 DECIMAL 数据类型以获得最佳精度和可移植性。
银行家舍入的历史背景
银行家舍入广泛用于计算中,因为它被纳入 IEEE 标准并受到数学家的青睐。它通常被称为“计算机规则”,起源于人类计算实践。
以上是在小数列中存储货币时应该使用什么精度和比例?的详细内容。更多信息请关注PHP中文网其他相关文章!