• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

MongoDB的繁殖聚集操作

mongodb 来源:Nabil 6次浏览

说我有以下聚合: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。


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)