MongoDB的繁殖聚集操作

说我有以下聚合:MongoDB的繁殖聚集操作

db.a.aggregate(

[

{ $project: { total: { $multiply: [ 4533, 0.0001 ] } } }

]

)

此聚集的输出是0.45330000000000004时,它显然应该是0.4533。这是聚合框架中的错误吗?

回答:

好吧,那么我会建议乘以使用$trunc,但你基本上可以只链接$multiply$divide这里脱身:

db.a.aggregate(

[

{ "$project": {

"total": {

"$divide": [

{ "$multiply": [

{ "$multiply": [ 4533, 0.0001 ] },

10000

]},

10000

]

}

}}

]

)

或只是$divide时,那是你的意思是:

db.a.aggregate([ 

{ "$project": { "total": { "$divide": [ 4533, 10000 ] } } }

])

这两者都会给你:

{ "total" : 0.4533 } 

如前所述,浮点数学和四舍五入没有什么新鲜之处,作为一门普通课程,您应该避免使用并简单应用您实际意义上的“非浮点”版本。

长时间阅读,如果你有一段时间在What Every Computer Scientist Should Know About Floating-Point Arithmetic。

以上是 MongoDB的繁殖聚集操作 的全部内容, 来源链接: utcz.com/qa/261991.html

回到顶部