提问人:Patrick Roberts 提问时间:5/3/2016 最后编辑:CommunityPatrick Roberts 更新时间:9/4/2017 访问量:59
这种算法会累积截断误差吗?
Will this algorithm accumulate truncation error?
问:
我计划编写一个第三方脚本,允许对网页进行评级系统,但我只希望它嵌入的每个网页在数据库中占据一行(或者更准确地说,因为我采用的是 NoSQL 路线,因此占用一个文档)。我的评级伪代码将如下所示:
function update(page, rate) {
collection.get({
page: page
}, function callback(err, doc) {
if (!err) {
var rating = doc.rating,
votes = doc.votes;
collection.update({
page: page
}, {
votes: votes + 1,
rating: (rating * votes + rate) / (votes + 1) // here's the iffy part
});
}
});
}
有没有办法改进算法以避免浮点值的截断错误,或者这首先不会成为问题?
答:
1赞
samgak
9/4/2017
#1
有没有办法改进算法以避免浮点值的截断错误,或者这首先不会成为问题?
是的。将所有评级的总和和评级数量以整数形式存储在数据库中,并且仅在显示时才从中计算平均值。
评论