据我所知,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}
我知道为什么会这样,但是有办法避免这个问题吗?
答案 0 :(得分:1)
如果您确切知道所需的小数位数,则可以Number((.1+.2).toFixed(1))
。或者你可以使用orm作为mongodb,例如mongoose,并为数据库文档定义模型,并使用模型中的某些代码定义所需的精度。