【问题标题】:Will this algorithm accumulate truncation error?这个算法会累积截断误差吗?
【发布时间】:2016-08-28 18:46:06
【问题描述】:

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

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

【问题讨论】:

  • JS数不都是浮点数吗?
  • 是的,他们是...我在问这个程序是否会随着时间的推移累积截断错误,因为每次更新发生时它都会乘以平均值并除以总数。

标签: javascript algorithm floating-accuracy nosql


【解决方案1】:

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

是的。将所有评分的总和和评分的数量以整数形式存储在数据库中,然后在显示时仅计算平均值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 2020-08-27
    • 1970-01-01
    相关资源
    最近更新 更多