Django:save()上的浮点精度损失

时间:2016-05-03 13:56:06

标签: python django command-line django-models floating-point

在我在命令行上设置值后调用FloatField后,我的Django对象save()正在向下舍入。

示例:

object = Model.objects.get(id=1)
object.floatfield = 23.99
object.floatfield 
23.99
object.save()
object =  Model.objects.get(id=1)
object.floatfield
23.0

我错过了什么?造成这种情况的原因是什么?

编辑:模型是:

class AbstractModel(models.Model): 
    class Meta: 
        abstract = True 
    float = models.FloatField(default=-1)

class Model(AbstractModel):
    pass

1 个答案:

答案 0 :(得分:1)

听起来像Django模型和数据库表有点不合适。您可以通过查看数据库中Model.float列的定义来检查这一点。如果没有看到您的迁移,我无法确切地知道发生了什么。

您在评论中说,您已回滚迁移,删除了迁移文件,然后再次尝试迁移。我建议您再次拍摄,但这次DROP数据库中的表makemigration<p:outputLabel for="startDate" value="#{msg.StartDate}" /> <p:calendar id="startDate" value="#{employeeBean.employee.startDate}" required="true" pattern="dd-MM-yyyy" language="#{msg.CalendarLanguage}" mask="true" requiredMessage="#{msg.required}"> <p:ajax event="dateSelect" update="endDate" /> </p:calendar> <p:message for="startDate" /> <p:outputLabel for="endDate" value="#{msg.EndDate}" /> <p:calendar id="endDate" mindate="#{employeeBean.employee.startDate}" value="#{employeeBean.employee.endDate}" required="false" pattern="dd-MM-yyyy" language="#{msg.CalendarLanguage}" mask="true"> </p:calendar> <p:message for="endDate" /> 。让Django重新创建表,可能更容易,然后试图找出究竟发生了什么。