背景
在一次使用中,出现存入数据库的数字比如2.15,但是通过代码读出来后为2.1500000000001的情况。
解决步骤
第一步
nodejs在使用mongoose作为模型映射时,建议浮点类型的字段定义为mongoose.Schema.Types.Decimal128
第二步
检查nodejs中数据转换时是否使用过类似parseFloat函数
,因为这个方法是将字符串数字转化为float的数值类型,但是mongodb数据库的数据类型浮点型只有double类型,这样会导致float转double失精度的问题。
第三步
经过前两步的排除都没有解决问题,发现是在使用mongodb更新操作的时候使用了 i n c 操 作 符 , 如 果 传 来 的