我在MongoDB中收集了一个产品。运行Express 3和Mongoose的应用程序。我正在拍卖,当我尝试将产品的价格增加0.01时,它会在第6次时正常工作,然后进入“1000.0699999999999”而不是1000.07。任何想法为什么?再次点击几次后,将会是:1000.1699999999998等等。几次后猫鼬增值错误
这里我更新功能:
app.post('/auctions/add', function(req, res){
//Get username
var user = req.session.username ;
//Product ID from form
var productID = req.body.product_id ;
//Find and update product
//Products.update({ id: productID }, { price: this.price + 0.01 }).exec() ;
Products.update({ id: productID }, {$inc: { price: .01 }, user_bidding: { username: user, timeBid: new Date() }}, function(err, numberAffected, raw) {
console.log(err);
console.log(numberAffected);
console.log(raw);
}) ;
//redirect to home
res.redirect('/');
}) ;
这是因为您使用'double'来存储价格,双打往往只是近似值。将您的价格存储为美分的整数。 – JohnnyHK 2013-02-26 22:03:50
是的,我有同样的问题。结束存储美分。这就是我们在PayPal所做的。 – chovy 2013-02-26 23:43:26