MongoDB浮点值精度?

时间:2017-04-25 18:09:06

标签: javascript mongodb floating-point ieee-754

据我所知,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}

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

1 个答案:

答案 0 :(得分:1)

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