MongoDB 浮点值精度?

MongoDB floating point value precision?

据我所知,JavaScript 使用 IEEE 754 浮点数来处理实数。 使用时出现问题,很常见的问题:

0.1 + 0.2 = 0.30000000000000004

大部分时间,使用像 'big.js' 这样的模块,但问题是在使用 MongoDB.

看这个文档:

{ "_id" : ObjectId("58ff8f721bbfbcd140e472b3"), "value" : 0.1 }

当我 运行 $inc 这样:

db.dec.update({ _id: ObjectId('58ff8f721bbfbcd140e472b3') }, { $inc: { value: 0.2 }});

结果一点都不好:

{ "_id" : ObjectId("58ff8f721bbfbcd140e472b3"), "value" : 0.30000000000000004 }

我知道为什么会这样,但有没有办法避免这个问题?

如果您确切知道所需的小数位数,则可以Number((.1+.2).toFixed(1))。或者您可以为 mongodb 使用 orm,例如 mongoose,并为您的数据库文档定义模型,并使用模型中的一些代码定义您想要的精度。