我在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