[英]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.