在Mongodb中最多存储2位小数?

时间:2018-07-17 12:20:00

标签: node.js mongodb mongoose

我正在一个金融项目中尝试存储交易金额,价格最多可以存储两位小数,我试图为我的金额字段选择模式类型,我首先想到的是{{1} }使用Number,另一种选择是以Number Decimal类型存储它们。

现在,由于我的价格最多只能达到2个小数位,因此我应该坚持使用默认的roundto:2Number还是存在一些小数点后四舍五入的问题。

roundto:2Number中存储值的字节数也有区别吗?

谢谢

1 个答案:

答案 0 :(得分:1)

当然,请使用NumberDecimal。一个人永远不要使用常规的浮点数来赚钱(它们不能准确表示大多数值)。

演示:

db.numbers.insert({fp: 0.1, dec: NumberDecimal('0.1')})
db.numbers.insert({fp: 0.2,  dec: NumberDecimal('0.2')})

db.numbers.aggregate([
  {
    $group: {
      _id: 1,
      total_fp: { $sum: "$fp"},
      total_dec: { $sum: "$dec"}
    }
  }
])
// { "_id" : 1, "total_fp" : 0.30000000000000004, "total_dec" : NumberDecimal("0.3") }