Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript MongoDB浮点值精度?_Javascript_Mongodb_Floating Point_Ieee 754 - Fatal编程技术网

Javascript MongoDB浮点值精度?

Javascript MongoDB浮点值精度?,javascript,mongodb,floating-point,ieee-754,Javascript,Mongodb,Floating Point,Ieee 754,据我所知,JavaScript使用IEEE 754浮点来处理实数。 使用时会出现问题,这是一个很常见的问题: 0.1+0.2=0.300000000000000004 大多数情况下,使用像“big.js”这样的模块,但问题是在使用MongoDB时 请看这份文件: {“_id”:ObjectId(“58ff8f721bbfbcd140e472b3”),“value”:0.1} 当我像这样运行$inc时: db.dec.update({u id:ObjectId('58ff8f721bbfbcd14

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

0.1+0.2=0.300000000000000004

大多数情况下,使用像“big.js”这样的模块,但问题是在使用MongoDB时

请看这份文件:

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

当我像这样运行$inc时:

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

结果一点也不好:

{“_id”:ObjectId(“58ff8f721bbfbcd140e472b3”),“value”:0.300000000000000004}


我知道为什么会发生这种情况,但有没有办法避免这个问题?

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

为什么这对您来说是个问题?@Thomas,因为我在处理货币对我来说这听起来像是格式问题,而不是数字系统的问题。检查此项:
var nr=.1+.2;console.log(nr,nr.tolocalString(“en”{style:“currency”,currency:“USD”}))
这些浮点错误实际上是一个问题的唯一一点,是在检查等式时
(.1+.2)=====.3
@Thomas好的,那么如何在MongoDB查询中使用它呢?现在我知道你想说什么了,但是如何把它们放在查询中呢?