我应该使用decimal或float来存储数据库中的比率吗?特别是在SQL2005中。
答案 0 :(得分:5)
这取决于您对准确性的要求。如果你可以容忍来自IEEE存储浮点数的方法的典型错误,那么使用一个浮点数,否则,如果你需要一个精确的表示,则使用小数(这适用于你将使用的任何不是整数的数字)在计算中使用百分比)。
答案 1 :(得分:2)
这取决于你的比例,真的。
对于利率,例如,在银行业,我们总是使用小数,精确度和规模由业务决定。如果要计算利率并且结果超出列的精度,那么总会有一个业务规则定义如何对结果进行舍入或截断以适合列。
如果您的比例是,例如,物体的直径与其周长之间的比率,我可能会使用浮子。
答案 2 :(得分:1)
取决于您的申请。如果您正在使用浮点数来计算与此比率有关的所有内容,那么将它存储为浮点数可能是有意义的。
但除此之外,浮动通常有点数据库气味。数据库管理员不喜欢它们,因为安装不准确意味着浮点数固有地不一致。这与我们心爱的ACID中的'C'onsistency相违背。
小数和缩放的int至少表现得可预测。
答案 3 :(得分:0)
取决于您希望它的确切程度。如果你需要一个或两个数字,并且你知道最大比率将低于maxint / 1000,我会考虑在int中存储mulitplied 100的比率。如果您需要确切的数字,您甚至可能希望将分子和分母存储为单独的整数。否则,坚持浮动或双打。
答案 4 :(得分:0)
我从不在数据库中使用浮点数,也许这是技术已经解决的旧习惯,我不是100%肯定。
整数,缩放整数或小数。有时候舍入错误似乎无关紧要,但它可能会失败某些值的匹配或引入累积错误。