在MongoDB中使用带有浮点值的$ inc时是否有任何问题?

时间:2012-03-16 19:29:00

标签: mongodb

首先,是否完全支持通过浮动值递增?

保持什么级别的浮点精度?

2 个答案:

答案 0 :(得分:6)

MongoDB支持通过浮点值递增。这将导致存储的值转换为浮点(如果它当前是其他数字类型),如果前一个值是一个非常大的64位整数,则可能导致舍入错误。

所有涉及浮点数的标准警告都适用。与Web浏览器中的JavaScript解释器一样,MongoDB存储IEEE双精度(64位)浮点值。这些值具有53位精度。中间计算可以使用80位长双精度计算,但最终结果始终存储为64位双精度浮点值。

答案 1 :(得分:1)

当使用非常大的数字时,我在shell中遇到了问题。 JavaScript会向下舍入,因此增量不会发生,并且会进入无限循环。我不得不强迫它使用NumberLong()来解决问题。公平地说,我没有明确使用浮点类型,但我相信这是JavaScript中的默认值 - 我将它用作整数(计数)。

据我所知,这不应该是非JavaScript语言驱动程序中的问题。