我正在尝试在十进制数的右侧获得最大4位数字的精度。以下是一个模型-使用flask-sqlalchemy和Postgres-组成:
Job Item(与许多关联表称为ItemJob)>>
Bill ItemJob(一对多)
# Item Model # Job Model class ItemJob(db.Model): __tablename__ = 'itemjob' id = db.Column(db.Integer, primary_key=True, autoincrement=True) bill_id = db.Column(db.Integer, ForeignKey('bill.id')) item_id = db.Column(db.Integer, ForeignKey('item.id'), primary_key=True) job_id = db.Column(db.Integer, ForeignKey('job.id'), primary_key=True) item = db.relationship(Item, backref='job_associations') job = db.relationship(Job, backref='item_associations') qty = db.Column(db.NUMERIC) unit_price = db.Column(db.NUMERIC) total_price = db.Column(db.NUMERIC) def __init__(self, item=None, job=None, qty=None, unit_price=None): self.item = item self.job = job self.qty = qty self.unit_price = unit_price self.total_price = float(qty) * float(unit_price) class Bill(db.Model): __tablename__ = 'bill' id = db.Column(db.Integer, primary_key=True) itemjob = db.relationship('ItemJob', backref='bill', lazy='dynamic') bill_total_price = db.Column(db.NUMERIC) def update_bill(self): list1 = [i.total_price for i in self.itemjob] self.bill_total_price = sum(map(float, list1))
结果我明白了:
# some code of creating and adding instance >>> itemjob1=ItemJob(job=job1,item=item1,qty=3,unit_price=35.350) >>> itemjob2=ItemJob(job=job1,item=item2,qty=1.0,unit_price=50.35) >>> itemjob3=ItemJob(job=job1,item=item3,qty=4.0,unit_price=0.001) # some code of adding and appending instance >>> bill.update_bill() >>> db.session.commit() >>> for p in (bill.itemjob):print(p.item,p.qty,p.unit_price,p.total_price) ... <Item 1> 3 35.35 106.05000000000001 <Item 2> 1.0 50.35 50.35 <Item 3> 4.0 0.001 0.004 >>> bill.bill_total_price Decimal('156.404')
如何在右侧将精度设置为最大4位,并避免在上述代码中像
total_price
那样存储<Item 1>
?
我正在尝试在十进制数的右侧获得最大4位数字的精度。以下是一个使用flask-sqlalchemy和Postgres的模型,其组成为:作业项(许多与关联...
很好,您要将数字/小数转换为浮点数:self.bill_total_price = sum(map(float, list1))