【发布时间】:2010-10-04 16:56:44
【问题描述】:
我应该使用小数还是浮点数将比率存储在数据库中?特别是在 SQL2005 中。
【问题讨论】:
标签: sql sql-server-2005 types
我应该使用小数还是浮点数将比率存储在数据库中?特别是在 SQL2005 中。
【问题讨论】:
标签: sql sql-server-2005 types
这取决于您对准确性的需求。如果您可以容忍来自 IEEE 存储浮点数方法的典型错误,请使用浮点数,否则,如果您需要精确表示,请使用小数(并且适用于您将使用的任何非整数的数字在使用百分比的计算中也是如此)。
【讨论】:
取决于您希望它有多精确。如果您需要 1 或 2 位数字,并且您知道最大比率将低于 maxint/1000,我会考虑将比率乘以 100 存储在 int 中。如果您需要精确的数字,您甚至可能希望将分子和分母存储为单独的整数。否则,请坚持使用浮点数或双精度数。
【讨论】:
我从不在数据库中使用浮点数,也许这是技术已经解决的一个旧习惯,我不是 100% 确定。
整数、缩放整数或小数。有时,舍入误差看起来微不足道,但它可能无法匹配某些值或引入累积误差。
【讨论】:
这取决于你的比例,真的。
对于利率,例如,在银行业务中,我们总是使用小数,其精度和规模由业务决定。如果要计算利率并且结果超出列的精度,那么总会有一个业务规则定义如何对结果进行四舍五入或截断以适合列。
例如,如果您的比率是物体直径与其周长之间的比率,我可能会使用浮点数。
【讨论】:
取决于您的应用程序。如果您已经使用浮点数来计算与此比率有关的所有内容,则将其存储为浮点数可能是有意义的。
但除此之外,浮点数通常有点数据库的味道。数据库管理员不喜欢它们,因为不断增加的不准确性意味着浮点数本质上是不一致的。这违反了我们心爱的ACID 中的“一致性”。
小数和缩放整数至少可以预测。
【讨论】: