SQL:您用什么来存储数据库中的比率(百分比)?

时间:2009-01-31 19:42:52

标签: sql sql-server-2005 types

我应该使用decimal或float来存储数据库中的比率吗?特别是在SQL2005中。

5 个答案:

答案 0 :(得分:5)

这取决于您对准确性的要求。如果你可以容忍来自IEEE存储浮点数的方法的典型错误,那么使用一个浮点数,否则,如果你需要一个精确的表示,则使用小数(这适用于你将使用的任何不是整数的数字)在计算中使用百分比)。

答案 1 :(得分:2)

这取决于你的比例,真的。

对于利率,例如,在银行业,我们总是使用小数,精确度和规模由业务决定。如果要计算利率并且结果超出列的精度,那么总会有一个业务规则定义如何对结果进行舍入或截断以适合列。

如果您的比例是,例如,物体的直径与其周长之间的比率,我可能会使用浮子。

答案 2 :(得分:1)

取决于您的申请。如果您正在使用浮点数来计算与此比率有关的所有内容,那么将它存储为浮点数可能是有意义的。

但除此之外,浮动通常有点数据库气味。数据库管理员不喜欢它们,因为安装不准确意味着浮点数固有地不一致。这与我们心爱的ACID中的'C'onsistency相违背。

小数和缩放的int至少表现得可预测。

答案 3 :(得分:0)

取决于您希望它的确切程度。如果你需要一个或两个数字,并且你知道最大比率将低于maxint / 1000,我会考虑在int中存储mulitplied 100的比率。如果您需要确切的数字,您甚至可能希望将分子和分母存储为单独的整数。否则,坚持浮动或双打。

答案 4 :(得分:0)

我从不在数据库中使用浮点数,也许这是技术已经解决的旧习惯,我不是100%肯定。

整数,缩放整数或小数。有时候舍入错误似乎无关紧要,但它可能会失败某些值的匹配或引入累积错误。