sparql怎么(1.7/2 = 0.8428572)才能正确?

sparql how (1.7/2 = 0.8428572) can be correct?

我有一个生成的查询:

其中 0.90.8 是 float 类型。

但是当我进行平均聚合时。我明白了:

更新 1

这是我的代码

select distinct ?item
#?ratingValue
(AVG(?ratingValue) as ?averageRatingValue) 
{
       values ?user {bo:ania}
    ?anotherUser a ?d .
        ?anotherUser rs:hasRated ?rating .
     ?rating rs:aboutItem ?item .
     ?rating a rs:Likes .
     ?rating rs:ratesBy ?ratingValue .
      filter (?user != ?anotherUser)
}
group by ?item

如果我不得不猜测(我猜了,因为我们无法访问您的数据或您的查询),我会说您对不止两个值进行平均,这很容易发生如果您的 ratingValue 已经来自某种 aggregation/grouping.

例如,当我 运行

select (avg(?x) as ?avg) {
 values ?x { 0.8 0.9 }
}

我得到 0.85。但是

select (avg(?x) as ?avg) {
 values ?x { 0.8 0.8 0.8 0.9 0.9  }
}

让我得到 0.84。如果你多加几项,又要处理浮点不精确的问题,你可以很容易地得到一些其他的值。