这个算法会累积截断错误吗?

时间:2016-05-03 15:58:44

标签: javascript algorithm floating-accuracy nosql

我打算编写一个允许网页评级系统的第三方脚本,但我只希望它嵌入的每个网页占用数据库中的一行(或者更准确地说是一个文档,因为我正在使用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 个答案:

答案 0 :(得分:1)

  

有没有办法改进算法以避免浮点值的截断错误,或者这首先不是问题?

是。将所有评级的总和和评级数作为整数存储在数据库中,并且只显示它们的平均值。