1
私はWebページの評価システムを可能にするサードパーティのスクリプトを書くことを計画していますが、私はNoSQLを取っているので、データベース内の1つの行(または、ルート)。評価のための私の擬似コードは次のようになります。このアルゴリズムは切り捨てエラーを累積しますか?
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番号はすべて浮動小数点ではありませんか? – stark
はい、彼らは...私はこのプログラムが平均を乗算し、更新が発生するたびに合計を分割するので、このプログラムが時間の経過とともに切り捨てエラーを累積するかどうか尋ねています。 –