Ive가 MongoDB의 컬렉션 제품을 가지고 있습니다. Express 3 및 Mongoose를 실행하는 앱. 나는 경매를하고 있는데 제품의 가격을 0.01 씩 올리려고하면 6 시간까지 잘 돌아가고 1000.07 대신 "1000.0699999999999"가됩니다. 왜 그런가? 몇 번의 클릭 후 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
네,이 같은 문제가있었습니다. 센트를 저장하는 것을 끝내었다. 그것이 PayPal에서 한 것입니다. – chovy