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