为什么在 django list_display 中四舍五入的浮点数字

Why is a float digit rounded in django list_display

我想在我的 django 管理列表中显示一个字段,它是除以两个 int 变量的结果。我期待看到像 0.95 这样的浮点数,但我有 0,例如。为什么?

我的模特:

class Flat(models.Model):
    flat_price = models.PositiveIntegerField(verbose_name='Цена квартиры')
    flat_prediction_price = models.PositiveIntegerField(verbose_name='Прогноз')

    def show_price(self):
        return unicode(self.flat_price) + u" тыс. руб."

    def show_accuracy(self):
        if self.flat_prediction_price is None:
            return float(999)
        else:
            result = self.flat_price/self.flat_prediction_price                    return round(result, 2)

和管理员:

class FlatAdmin(admin.ModelAdmin):
    model = Flat
    inlines = [NeedInline]
    list_display = ('show_price','show_accuracy')

正如 selchuk 所提到的,如果你这样做 float(self.flat_price) / self.flat_prediction_price 那将 return 你的浮动结果(你可以从那里舍入)。

您现在正在做的是用一个整数除以一个整数,这将得到一个整数结果。然后在获得该 int 结果后四舍五入,这不会四舍五入您希望它四舍五入的方式,因为它已经只是 0。通过 int 潜水浮点数(或者可以将两者都转换为浮点数),您将得到一个浮点数结果并可以对该结果进行舍入。