为什么python中的round()函数给出不同的结果?

时间:2018-10-18 04:23:28

标签: python python-3.x

我试图进行一轮浮点数运算,但是在python中,对于不同的浮点数,它给出的结果不同。示例:-

>>> round(4.5)
4

>>> round(3.5)
4

您可以看到结果round(4.5)返回4,而rount(3.5)返回4。如何解决这个问题呢。 ?我希望round(4.5)返回5。请帮帮我。谢谢

2 个答案:

答案 0 :(得分:2)

请参见official doc

基本上它叫偶数回合。它将x.5的值取整为偶数选择。

这是why

答案 1 :(得分:0)

来自docs

  

如果两个倍数相等接近,则将舍入为偶数选择(例如,round(0.5)和round(-0.5)均为0,round(1.5)为2)。

即Python 3做"rounding half to even"

您可以通过这种方式进行“四舍五入”:

class OrderPage(models.Model):

    description = models.CharField(max_length=255, blank=False)
    sites = models.ManyToManyField(Site)

    class Meta:
        unique_together = (('id', 'sites'),)


class Order(models.Model):
    order_page = models.ForeignKey(OrderPage)


class OrderPageAdmin(admin.ModelAdmin):
    filter_horizontal = ('sites',)

admin.site.register(OrderPage, OrderPageAdmin)