繁体   English   中英

在节点/猫鼬中使用$ inc时的MongoDB数字精度

[英]MongoDB number precision when using $inc in node/mongoose

我目前正在使用MongoDB建立数据库模型,在该数据库中,用户可以在帐户之间转移资金并购买产品,这些产品的价值从其当前余额中扣除。 对于产品值和用户余额,我的精度为两位小数。

问题是,当我使用$ inc运算符对小数点后的值进行加减运算时,在用户文档中会出现一些精度错误,如下所示:

{
    "balance": 31513.210000000003,
}

我正在使用节点和猫鼬来操纵我的数据库,并且我知道该语言的浮点数不正确,但是我想知道是否有任何方法可以克服我的mongodb数据库中的这个问题并迫使它始终与小数点后两位。因此,当我查询余额为正的用户时,不会检测到0.00000000003之类的值,因为它应该为0。

有什么办法可以在mongodb中控制它吗?

除了使用使用浮点数学的double之外,您还可以选择其他几种方法,这些方法具有不同的优缺点。

整数

余额不是全部单位,而是小数单位。 因此,您将123.45存储为12345。如果数学是加法和减法,那么这很容易,并且需要确保的是,只要您表示一个值,就插入。 在适当的位置,但是您可以为此编写一个函数。

宾语

用两个整数表示:一个用于整数部分,一个用于小数部分(123和45)。 这使数学运算更加困难,但可能使输出更易于管理,并且更难以意外输出错误的值。

使用字符串,您将必须编写自己的所有数学运算,但是输出可以很简单,因为存储的值为“ 123.45”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM