说我有以下聚合:
db.a.aggregate(
[
{ $project: { total: { $multiply: [ 4533, 0.0001 ] } } }
]
)
此汇总的输出 0.45330000000000004 ,显然应 0.4533 。这是聚合框架中的错误吗?
答案 0 :(得分:1)
好的,然后我建议使用进行乘法运算,但基本上只需链接$trunc
和$multiply
就可以了。
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 }
如上所述,浮点数学和舍入没有什么新鲜事,作为一般课程,你应该避免使用,只需应用你实际意思的“非浮点”版本。
如果你有一段时间的长时间阅读是$divide
。