在Mongodb中存储小数点后2位的数字



我正在做一个金融项目,我试图为我的交易存储金额,价格最多可以存储两个小数点,我正在尝试为我的金额字段选择Schema类型,我首先想到的是Numberroundto:2,另一个选项是将它们存储为Number decimal类型。

现在,由于我的价格最多只能达到2位小数,所以我应该坚持使用默认的Numberroundto:2,或者可能存在小数可以四舍五入的问题。

此外,在NumberNumber Decimal中存储值的字节数之间是否存在差异?

感谢

当然要使用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") }

最新更新